Lim Seunghyun Space

[Leetcode] Climbing stairs 본문

Algorithm/문제

[Leetcode] Climbing stairs

Lim Seung Hyun 2021. 12. 13. 12:11

문제 링크

 

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

 

문제 해설

  • 계단의 정상에 도달하려면 n번의 걸음을 해야한다.
  • 매번 1개 혹은 2개의 계단을 오를 수 있다.
  • 얼마나 많은 방법으로 정상에 오를 수 있는가

 

나의 풀이 (Python3)

class Solution:
    def climbStairs(self, n):
        
        if n <= 2:
            return n
        
        dp = [0 for i in range(n+1)]
        dp[0] = 0 # 없는 값이지만 계산을 쉽게 하기 위해 0으로 초기화
        dp[1] = 1
        dp[2] = 2
        
        for i in range(3, n+1):
            dp[i] = dp[i - 1] + dp[i - 2]
        
        return dp[n]
  • n = 1이면 계단이 한 개이므로 결과는 1
  • n = 2이면 계단이 두 개, 결과는 step1 + step1, step2로 2
  • 이후 케이스를 계속 반복하면 규칙성이 보이는데 n에서는 n - 1번째 결과 값과 n - 2번째 결과 값의 합이 된다.
    • f(n) = f(n-1) + f(n-2) 로 피보나치와 동일하다.

 

Github : https://github.com/Limseunghyun95/code_test/blob/master/leetcode/climbing_stairs.py

 

GitHub - Limseunghyun95/code_test: 코딩 테스트 연습 공간

코딩 테스트 연습 공간. Contribute to Limseunghyun95/code_test development by creating an account on GitHub.

github.com

 

참고 자료

  • https://www.youtube.com/watch?v=Y0lT9Fck7qI&ab_channel=NeetCode
728x90