Skip to content

Commit cc68a6d

Browse files
committed
feat(soobing): week2 > climbing-stairs
1 parent 4e82462 commit cc68a6d

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

โ€Žclimbing-stairs/soobing.tsโ€Ž

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* ๋ฌธ์ œ ์œ ํ˜•
3+
* - DP (ํ”ผ๋ณด๋‚˜์น˜)
4+
*
5+
* ๋ฌธ์ œ ์„ค๋ช…
6+
* - ๊ณ„๋‹จ์„ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ
7+
*
8+
* ์•„์ด๋””์–ด
9+
* 1) ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ํ™œ์šฉ
10+
* - climbStairs(n) = climbStairs(n-1) + climbStairs(n-2)
11+
*/
12+
function climbStairsBottomUp(n: number): number {
13+
function fibonacci(n: number, memo = new Map<number, number>()) {
14+
if (n === 1) return 1;
15+
if (n === 2) return 2;
16+
17+
if (memo.has(n)) return memo.get(n);
18+
const result = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
19+
memo.set(n, result);
20+
return result;
21+
}
22+
return fibonacci(n);
23+
}
24+
25+
function climbStairsTopDown(n: number): number {
26+
const dp = new Array(n + 1).fill(0);
27+
dp[1] = 1;
28+
dp[2] = 2;
29+
30+
for (let i = 3; i <= n; i++) {
31+
dp[i] = dp[i - 1] + dp[i - 2];
32+
}
33+
return dp[n];
34+
}

0 commit comments

Comments
ย (0)