Memoization문제
sudo code
n개의 계단을 올라간다
한걸음에 1 또는 2개 계단을 올라갈 수 있다
1 <= n <= 45
1 - [1]
2 - [1,1] [2]
3 - [1,1,1] [1,2] [2,1]
4 - [1,1,1,1] [1,1,2] [1,2,1] [2,1,1] [2,2]
5 - [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,1,2] [2,2,1]
결과의 가짓수가 n-2 + n-1 fibo랑 같다
메모이제이션 활용하여 더해주기 O(N)이 될 것이다.
class Solution {
public static int[] answer = new int[46];
public int climbStairs(int n) {
if(n == 1) return 1;
else if(n == 2) return 2;
if (answer[n] != 0) {
return answer[n];
} else answer[n] = climbStairs(n-2) + climbStairs(n-1);
return answer[n];
}
}
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] Longest common prefix (0) | 2021.04.10 |
---|---|
[LeetCode] - Reverse Linked List (0) | 2021.04.09 |
[LeetCode] Convert Binary Number in a Linked List to Integer (0) | 2021.04.03 |
[LeetCode] - Merge Two Sorted Lists (0) | 2021.03.26 |
[LeetCode] Majority Element (0) | 2021.03.19 |