coding test - python/기본기 문제
문제 / 계단오르기(Top-Down : 메모이제이션) - 동적 계획법 / Python 파이썬
sillon
2023. 1. 10. 14:50
728x90
반응형
문제 제목: 계단오르기(Top-Down : 메모이제이션)
철수는 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다.
만약 총 4계단을 오른다면 그 방법의 수는
1+1+1+1,
1+1+2,
1+2+1,
2+1+1,
2+2
로 5가지이다. 그렇다면 총 N계단일 때 철수가 올라갈 수 있는 방법의 수는 몇 가지인가?
▣ 입력설명
첫째 줄은 계단의 개수인 자연수 N(3≤N≤45)이 주어집니다.
▣ 출력설명
첫 번째 줄에 올라가는 방법의 수를 출력합니다.
▣ 입력예제 1
7
▣ 출력예제 1
21
나의 풀이 (동적 계획법)
def solution(n):
dy = [0] * (n+1)
dy[1] = 1 # 높이 1인 계단을 올라가는 방법 1칸씩 (1가지)
dy[2] = 2 # 높이 2인 계단을 올라가는 방법 1칸씩 두번, 2칸씩 한번(2가지)
for i in range(3,n+1):
dy[i] = dy[i-1] + dy[i-2]
return dy[n]
if __name__ == '__main__':
n = int(input())
print(solution(n))
※ 알아야 할 것
- 점화식 dy[i] = dy[i-1] + dy[i-2]
728x90
반응형