반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 맥북
- jdk17
- SQL
- 오라클
- oracleapex
- union
- 학점은행제
- python
- 렌탈스튜디오창업
- 코어뱅킹
- 채널계
- 프로그래머스
- 인강빨리듣기
- MSA
- 계정계
- Homebrew
- jdk
- 모놀리식
- 코딩테스트
- fastapi
- 맥북셋팅
- 디렉토리계층구조
- DB
- 학점은행제무료강의
- it자격증
- Pass By Value
- 컴퓨터공학학사취득
- 개인프로필스튜디오창업
- 은행IT
- 맥북환경설정
Archives
- Today
- Total
개발머해니
[파이썬] 출근하는 방법 Ⅱ 본문
728x90
반응형
실습 설명
영훈이는 출근할 때 계단을 통해 사무실로 가는데요. 급할 때는 두 계단씩 올라가고 여유 있을 때는 한 계단씩 올라갑니다. 결국 계단을 오를 수 있는 모든 방법으로 계단을 올라갔는데요.
이제 다르게 계단을 올라갈 수는 없을까 고민하던 영훈이는 특이한 방법으로 계단을 오르려고 합니다.
가령 계단을 한 번에 1, 2, 4 칸씩 올라가 보는 건데요. 예를 들어서 계단을 4개를 올라가야 되면:
- 1, 1, 1, 1
- 2, 1, 1
- 1, 2, 1
- 1, 1, 2
- 2, 2
- 4
총 6개 방법이 있네요.
함수 설명
함수 staircase()는 파라미터로 총 계단 수 n 그리고 한 번에 올라갈 수 있는 계단 수를 possible_steps로 받고, 올라갈 수 있는 방법의 수를 효율적으로 찾아서 리턴합니다.
그러니까 n이 3, possible_steps 가 [1, 2, 3]이면, 계단 총 3칸을 1, 2, 3칸씩 갈 수 있을 때 오르는 방법의 수를 구하는 거죠. 단, possible_steps에는 항상 1이 포함된다고 가정합니다.
실습 결과
# 높이 n개의 계단을 올라가는 방법을 리턴한다
def staircase(stairs, possible_steps):
# 계단 높이가 0 이거나 1 이면 올라가는 방법은 한 가지밖에 없다
number_of_ways = [1, 1]
# 이 변수들을 업데이트해 주며 n 번째 계단을 오르는 방법의 수를 구한다.
for height in range(2, stairs + 1):
number_of_ways.append(0)
for step in possible_steps:
# 음수 계단 수는 존재하지 않기 때문에 무시합니다
if height - step >= 0:
number_of_ways[height] += number_of_ways[height - step]
return number_of_ways[stairs]
print(staircase(5, [1, 2, 3]))
print(staircase(6, [1, 2, 3]))
print(staircase(7, [1, 2, 4]))
print(staircase(8, [1, 3, 5]))
13
24
31
19
시간 복잡도
728x90
반응형
'알고리즘' 카테고리의 다른 글
[파이썬] 리스트 항목 합 탐색 (0) | 2023.09.30 |
---|---|
[파이썬] 중복되는 항목 찾기 Ⅱ (0) | 2023.09.30 |
[파이썬] 출근하는 방법 Ⅰ (0) | 2023.09.30 |
[파이썬] 삼송전자 주식 분석 (0) | 2023.09.30 |
[파이썬] 투자 귀재 규식이 Ⅲ (0) | 2023.09.30 |