Algorithm
70. Climbing Stairs
Doljae
2021. 4. 29. 17:25
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
1. Dynamic Programming
class Solution:
def climbStairs(self, n: int) -> int:
dp = [[0] * 2 for _ in range(46)]
dp[1][0] = 1
dp[2][0] = 1
dp[2][1] = 1
for i in range(3, n + 1):
dp[i][0] = sum(dp[i - 1])
dp[i][1] = sum(dp[i - 2])
return sum(dp[n])
DP 문제는 쉽던 어렵던 풀면 뭔가 기분이 좋다.
참고로 BFS로 접근하려다가 뭔가 알 수 없는 위기를 느껴서 DP로 전환했다.
2. Fibonacci Number (?..._)
class Solution:
def climbStairs(self, n: int) -> int:
if n == 1:
return 1
if n == 2:
return 2
first, second = 1, 2
for i in range(3, n + 1):
third = first + second
first = second
second = third
return second
그렇다. 이 문제는 피보나치수열을 구하라는 문제와 똑같은 문제였다.
그 외에도 굉장히 다양한 풀이법이 있었는데 직접 코드를 짠 건 요기까지...