반응형
https://leetcode.com/problems/climbing-stairs/
dp 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. vector v를 선언해 크기를 46개로 정하고 0으로 초기화해줍니다.
2. 계단 1번째에 오르기 위한 경우의 수는 1, 2번째는 2입니다. 이에 맞게 값을 할당해줍니다.
📔 풀이과정
계단 i번째에 오르기 위한 경우의 수는 i-1번째에 오르기 위한 경우의 수 + i-2번째에 오르기 위한 경우의 수가 됩니다. 이를 식으로 쓰면 다음과 같습니다.
v[i] = v[i-1] + v[i-2]
3부터 n까지 for loop를 돌며 경우의 수를 저장합니다.
📔 정답출력
v[n]을 반환합니다.
📕 Code
📔 C++
#include <bits/stdc++.h>
class Solution {
public:
int climbStairs(int n) {
vector <int> v(46, 0);
v[1] = 1;
v[2] = 2;
for(int i = 3; i <= n; i++) {
v[i] = v[i-1] + v[i-2];
}
return v[n];
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > DP(Dynamic Programing)' 카테고리의 다른 글
(C++) - LeetCode (easy) 1137. N-th Tribonacci Number (0) | 2023.01.30 |
---|---|
(C++) - LeetCode (easy) 263. Ugly Number (0) | 2023.01.26 |
(C++) - 백준(BOJ) 20438 : 출석체크 (0) | 2022.06.16 |
(Python) - 백준(BOJ) 10826 : 피보나치 수 4 (0) | 2022.04.26 |
(C++) - 백준(BOJ) 1937 : 욕심쟁이 판다 (0) | 2022.04.03 |