문제 링크
https://leetcode.com/problems/climbing-stairs/다이나믹 프로그래밍(DP)이란?
소스 코드
function climbStairs(n: number): number {
if(n === 1) return 1;
if(n === 2) return 2;
const stairs = new Array(n+1).fill(0);
stairs[1] = 1;
stairs[2] = 2;
for(let i=3; i<stairs.length;i+=1) {
stairs[i] = stairs[i-1] + stairs[i-2];
}
return stairs[n];
};
각 계단의 경우의 수를 살펴보면 다음과 같다
1개 → 1
2개 → 2
3개 → 3
4개 → 5
5개 → 8
즉 피보나치 수열과 맞물린다
0 1 1 2 3 5 8 13 ......
때문에 피보나치 수열의 점화식인 D[i] = D[i-1] + D[i-2] 을 이용하여 푼다