새소식

Computer Science/코딩테스트 문제 풀이

[파이썬] [DP] 예제2 철수의 계단

  • -

문제

철수는 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다. 만약 총 4계단을 오른다면
그 방법의 수는
1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2 로 5가지이다.
그렇다면 총 N계단일 때 철수가 올라갈 수 있는 방법의 수는 몇 가지인가?첫째 줄은 계단의 개수인 자연수 N(3≤N≤45)이 주어집니다.

입력

첫째 줄은 계단의 개수인 자연수 N(3≤N≤45)이 주어집니다.

출력

첫 번째 줄에 올라가는 방법의 수를 출력합니다.

예제 입력 1

4

예제 출력 1

5


Top-Down 방식, 재귀

계단이 1일 때 -> 1
계단이 2일 때 -> 2 (1+1,2)
계단이 3일 때 -> 3 (1+1+1, 1+2, 2+1) 즉, 1번계단에서 2칸 뛰어서 왔거나, 2번계단에서 1칸 뛰어서 옴

F(n)=F(n-1)+F(n-2)


정답

Top-Down 방식

import sys

sys.stdin=open('input.txt','r')

if __name__=="__main__":
    n=int(input())
    dy=[0]*(n+1)                # 저장해 놓을 테이블을 정의한다
    dy[1]=1                     # 종이에 끄적이면서 점화식을 세운다.
    dy[2]=2                     # 규칙을 찾고 3번째 부터 적용되는 

    for i in range(3,n+1):
        dy[i]=dy[i-1]+dy[i-2]   # 점화식을 세운다.

    print(dy[n])

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.