Skip to content

Commit b6c6d48

Browse files
feat: climbing stairs 풀이
1 parent e4866f6 commit b6c6d48

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//특정 지점까지 얼마나 많은 개수의 길이 존재할까
2+
//갈 수 있는 방법은 1 혹은 2칸씩 오를 수 있다.
3+
4+
/* 1. dp로 풀기.
5+
점화식은 이렇다.
6+
dp[n] = d[n-1] + d[n-2]
7+
*/
8+
9+
var climbStairs = function(n) {
10+
if (n === 1) return 1;
11+
if (n === 2) return 2;
12+
13+
const dp = Array(n + 1).fill(0);
14+
dp[1] = 1;
15+
dp[2] = 2;
16+
17+
for (let i = 3; i <= n; i++) {
18+
dp[i] = dp[i - 1] + dp[i - 2];
19+
}
20+
21+
return dp[n];
22+
};
23+
24+
//시간복잡도: O(n)
25+
//공간복잡도: O(n)
26+
27+
//2. 메모리 아끼기
28+
//dp배열 없이 변수로만 작성하기
29+
var climbStairs = function(n) {
30+
if (n === 1) return 1;
31+
let a = 1, b = 2;
32+
for (let i = 3; i <= n; i++) {
33+
let temp = a + b;
34+
a = b;
35+
b = temp;
36+
}
37+
return b;
38+
};
39+
40+
41+
//시간복잡도: O(n)
42+
//공간복잡도: O(1)

0 commit comments

Comments
 (0)