Skip to content

Commit 6f472f2

Browse files
committed
refactor: Improve algorithm performance with dynamic programming
1 parent 84f531a commit 6f472f2

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

โ€Žclimbing-stairs/river20s.pyโ€Ž

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,30 @@ def climbStairs(self, n):
55
:rtype: int
66
f(n)์ด ๊ณ„๋‹จ์„ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ผ๋ฉด,
77
f(n) = f(n-1) + f(n-2)
8+
- Time Complexity
9+
์žฌ๊ท€๋กœ ํ‘ธ๋Š” ๊ฒฝ์šฐ ์ง€์ˆ˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์ง€๋งŒ,
10+
์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ํ‘ธ๋Š” ๊ฒฝ์šฐ
11+
O(n) ์†Œ์š” ๋จ
12+
- Space Complexity
13+
์žฌ๊ท€๋กœ ํ‘ธ๋Š” ๊ฒฝ์šฐ, ์žฌ๊ท€ ํ˜ธ์ถœ ์Šคํƒ์ด O(n)๋งŒํผ์˜ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
14+
์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ํ‘ธ๋Š” ๊ฒฝ์šฐ,
15+
๋ฆฌ์ŠคํŠธ dp์— ๊ฐ ์ธ๋ฑ์Šค ๋ณ„๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ O(n) ์‚ฌ์šฉ ๋จ
816
917
"""
10-
# ๊ธฐ์ € ์กฐ๊ฑด:
11-
# n์ด 1์ธ ๊ฒฝ์šฐ 1 ๋ฐ˜ํ™˜
18+
19+
# n์ด 1์ธ ๊ฒฝ์šฐ ๋ฐฉ๋ฒ•์€ ํ•˜๋‚˜๋ฟ
1220
if n == 1:
1321
return 1
14-
# n์ด 2์ธ ๊ฒฝ์šฐ 2 ๋ฐ˜ํ™˜
15-
if n == 2:
16-
return 2
17-
# ์žฌ๊ท€ ํ˜ธ์ถœ
18-
return self.climbStairs(n - 1) + self.climbStairs(n - 2)
22+
23+
# ๊ธธ์ด๊ฐ€ n+1์ธ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
24+
# ์ธ๋ฑ์Šค 0: ์‹œ์ž‘์ (0๋ฒˆ์งธ)
25+
# ์ธ๋ฑ์Šค n: n๋ฒˆ์งธ ๊ณ„๋‹จ
26+
dp = [0 for i in range(n + 1)]
27+
28+
dp[1] = 1 # n = 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜
29+
dp[2] = 2 # n = 2์ด๋ฉด 2๋ฅผ ๋ฐ˜ํ™˜
30+
31+
for i in range(3, n + 1):
32+
dp[i] = dp[i - 1] + dp[i - 2]
33+
34+
return dp[n]

0 commit comments

Comments
ย (0)