본문 바로가기

Algorithm/DP(Dynamic Programing)

(C++) - LeetCode (easy) 70. Climbing Stairs

반응형

https://leetcode.com/problems/climbing-stairs/

 

Climbing Stairs - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

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];
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.