Post

leetcode(리트코드)70-Climbing Stairs

leetcode 70 - Climbing Stairs문제입니다.

1. 문제

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


2. Input , Output


3. 분류 및 난이도

Eazy 난이도 문제입니다.
leetcode Top 100 Liked의 문제입니다.


4. 문제 해석

  • 간단한 DP 문제입니다. 1step과 2step으로 계단을 올라갈 때 n에 도달하는 경우의 수 입니다.

5. code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
    int climbStairs(int n) {
        int DP[46]={0,};
        if(n==1)
            return 1;
        DP[0]=1;
        DP[1]=1;
        for(int i=2;i<=n;++i)
        {
            DP[i]= DP[i-2] + DP[i-1];
        }
        return DP[n];
    }
};

6. 결과 및 후기, 개선점

시간(67%)

위의 점화식은

n=4라고 하면DP[i-2]는 DP[2]로 (1+1, 2)라는 경우의 수가 저장되어 있습니다. DP[i-1]은 DP[3]으로 (1+1+1,2+1,1+2)라는 경우의 수가 들어있습니다.

DP[2]의 경우의 수에 +2를 해준 경우의 수 (1+1+2,2+2)와
DP[3]의 경우의 수에 +1를 해준 경우의 수 (1+1+1+1,2+1+1,1+2+1)의 경우의 수를 합친 5가 DP[4]가 됩니다.

This post is licensed under CC BY 4.0 by the author.