-
Notifications
You must be signed in to change notification settings - Fork 125
/
Copy pathtaekwon-dev.java
28 lines (25 loc) ยท 1003 Bytes
/
taekwon-dev.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
* ์๊ฐ ๋ณต์ก๋: O(n)
* - n = 5 ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ ํ๊ณ ์๊ฐํด๋ณด๊ธฐ
* - 3์ธต ๊ณ๋จ -> 2์ธต, 1์ธต ๊ณ์ฐ (์ด ๊ฒฝ์ฐ๋ ์ด๋ฏธ ๋ฉ๋ชจ๋์ด ์์ด์ ๋ณ๋๋ก ๊ณ์ฐํ์ง ์์)
* - 4์ธต ๊ณ๋จ -> 3์ธต, 2์ธต ๊ณ์ฐ (2์ธต์ ๋ฉ๋ชจ์ ์๋ ๊ฒ ํ์ฉ)
* - 5์ธต ๊ณ๋จ -> 4์ธต, 3์ธต ๊ณ์ฐ (3์ธต์ ๋ฉ๋ชจ์ ์๋ ๊ฒ ํ์ฉ)
* - ...
* - ๊ฐ ๋จ๊ณ ๋ณ๋ก (๋ฉ๋ชจ๋ฅผ ํ์ฉํด) ์์ง ๊ณ์ฐ๋์ง ์์ ๊ฒ์ ํ ๋ฒ์ฉ ํธ์ถํ๊ฒ ๋๋ฏ๋ก O(n)
* - ๊ทผ๋ฐ ๋ง์ฝ ๋ฉ๋ชจ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด? (์ค๋ณต ํธ์ถ์ด ๋ง์ด ์ผ์ด๋จ ... O(n^2))
*
* ๊ณต๊ฐ ๋ณต์ก๋: O(n)
*/
class Solution {
public int climbStairs(int n) {
int[] memo = new int[n + 1];
return climbStairs(n, memo);
}
public int climbStairs(int n, int[] memo) {
if (n == 1) return 1;
if (n == 2) return 2;
if (memo[n] > 0) return memo[n];
memo[n] = climbStairs(n - 1, memo) + climbStairs(n - 2, memo);
return memo[n];
}
}