728x90
▶70 - Climbing Stairs
▶문제
You are climbing a staircase. It takes n steps to reach the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
▶예제
Input: n = 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps
Input: n = 3
Output: 3
Explanation: There are three ways to climb to the top.
1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step
728x90
▶풀이
이번 문제도 dp를 이용해서 풀 수 있는 문제이다.
각 단계별로 어떻게 되는지 식을 계산해서 풀면 된다.
1, 2일 때는 각각 1, 2로 고정이고,
그 뒤로는 i번째는 i-1번째 마이너스 i-2번째가 된다.
class Solution:
def climbStairs(self, n: int) -> int:
dp = [0 for _ in range(n + 1)]
dp[1] = 1
if n == 1:
return dp[1]
dp[2] = 2
for i in range(3, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]
728x90
'LeetCode' 카테고리의 다른 글
[LeetCode] Easy - 232 Implement Queue using Stacks (0) | 2022.12.16 |
---|---|
[LeetCode] Medium - 1143 Longest Common Subsequence (0) | 2022.12.15 |
[LeetCode] Hard - 124 Binary Tree Maximum Path Sum (0) | 2022.12.14 |
[LeetCode] Medium - 198 House Robber (1) | 2022.12.14 |
[LeetCode] Medium - 931 Minimum Falling Path Sum (Python) (4) | 2022.12.13 |