Skip to content

Commit f90d1bd

Browse files
committed
feat: implement climbStairs function to calculate the number of ways to climb n stairs
1 parent 8ace3fb commit f90d1bd

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution:
2+
def climbStairs(self, n: int) -> int:
3+
"""
4+
ํ•œ๋ฒˆ์— 1๊ณ„๋‹จ ํ˜น์€ 2๊ณ„๋‹จ ์”ฉ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„๋•Œ, n๊ฐœ์˜ ๊ณ„๋‹จ์„ ์˜ฌ๋ผ๊ธฐ๊ฐ€ ์œ„ํ•œ ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
5+
6+
๋ฐฉ๋ฒ•:
7+
1. dp๋กœ ํ’€์ดํ•˜๊ธฐ. ์ ํ™”์‹ ๊ณ„์‚ฐ
8+
n=2์ผ๋•Œ, 1,1 / 2 -> 2๊ฐ€์ง€
9+
n=3์ผ๋•Œ, 1,1,1 / 1,2 / 2,1 -> 3๊ฐ€์ง€
10+
n=4์ผ๋•Œ, 1,1,1,1 / 1,1,2 / 1,2,1 / 2,1,1 / 2,2 -> 5๊ฐ€์ง€
11+
1) n-1์—์„œ 1๊ณ„๋‹จ ์˜ฌ๋ผ๊ฐ€๊ธฐ
12+
2) n-2์—์„œ 2๊ณ„๋‹จ ์˜ฌ๋ผ๊ฐ€๊ธฐ
13+
-> dp[i] = dp[i-1] + dp[i-2]
14+
2. ์ด์ „ ๊ฐ’ ๋‘๊ฐœ๋งŒ ์•Œ์•„๋‘๋ฉด ๋˜๋‹ˆ, dp ๋ฐฐ์—ด์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ , prev1, prev2๋กœ ๊ณ„์‚ฐํ•˜๊ธฐ
15+
์‹œ๊ฐ„๋ณต์žก๋„ O(n), ๊ณต๊ฐ„๋ณต์žก๋„ O(1)
16+
17+
Args:
18+
n (int): ์ตœ์ข…์ ์œผ๋กœ ์˜ฌ๋ผ๊ฐ€์•ผ ํ•˜๋Š” ๊ณ„๋‹จ์˜ ์ˆ˜
19+
20+
Returns:
21+
int: n๊ฐœ์˜ ๊ณ„๋‹จ์„ ์˜ฌ๋ผ๊ฐ€๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์˜ ๊ฐฏ์ˆ˜
22+
"""
23+
if n <= 3:
24+
return n
25+
prev1, prev2 = 2, 3
26+
for i in range(3, n):
27+
prev1, prev2 = prev2, prev1 + prev2
28+
return prev2

0 commit comments

Comments
ย (0)