Skip to content

Commit a340f0c

Browse files
committed
climbing stairs solution
1 parent af186fa commit a340f0c

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

climbing-stairs/limlimjo.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
var climbStairs = function (n) {
6+
// 규칙성 찾기
7+
// n = 1 -> 1 (1)
8+
// n = 2 -> 2 (1+1, 2)
9+
// n = 3 -> 2 + 1 = 3 (1+1+1, 1+2, 2+1)
10+
// n = 4 -> 2 + 3 = 5 (1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2)
11+
// n = 5 -> 3 + 5 = 8 (1+1+1+1+1, 1+1+1+2, 1+1+2+1, 1+2+1+1, 2+1+1+1, 1+2+2, 2+2+1, 2+1+2)
12+
// :
13+
// :
14+
// 규칙 -> n번째 방법 갯수 = n-1번째 방법 갯수 + n-2번째 방법 갯수
15+
16+
// 1. 객체 생성 (n=1일 때, n=2일 때 기본값 설정)
17+
let dp = { 1: 1, 2: 2 };
18+
19+
// 2. n=3일 때부터 dp값 계산
20+
for (let i = 3; i <= n; i++) {
21+
dp[i] = dp[i - 1] + dp[i - 2];
22+
}
23+
24+
// 3. 결과값 반환
25+
return dp[n];
26+
};
27+
28+
// 시간 복잡도: O(n) <- for문 돌면서 dp값 계산하므로
29+
// 공간 복잡도: O(n) <- dp 객체에 n개의 값 저장하므로

0 commit comments

Comments
 (0)