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] 을 이용하여 푼다