Skip to content

Commit f8b31b0

Browse files
committed
[7th batch] week 2 - climbing stairs
1 parent f2cc147 commit f8b31b0

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,34 @@ def fibonacci(step):
1515
fibonacci(3)
1616

1717
return memo[n]
18+
19+
20+
# 7๊ธฐ ํ’€์ด
21+
# ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
22+
# - memoization์„ ์ด์šฉํ•ด ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅ์„ ํ•˜๋ฉด, ๊ณ„์‚ฐ์€ 0 ~ n๊นŒ์ง€ ํ•œ ๋ฒˆ์”ฉ๋งŒ ๊ณ„์‚ฐ
23+
# - ์ฆ‰, ๊ณ„๋‹จ์˜ ๊ฐœ์ˆ˜ n์ด ์ตœ๋Œ€ ๊ณ„์‚ฐ ํšŸ์ˆ˜์ด๋ฏ€๋กœ ์ „์ฒด ์—ฐ์‚ฐ์€ O(n)
24+
# ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
25+
# - memoization์„ ํ•˜๊ธฐ ์œ„ํ•œ dict์— ์ตœ๋Œ€ n์˜ ๊ฐœ์ˆ˜๋งŒํผ๋งŒ ์ €์žฅ
26+
# - ์žฌ๊ท€ ํ˜ธ์ถœ ์Šคํƒ ๊นŠ์ด๋„ ์ตœ๋Œ€ n
27+
class Solution:
28+
# ํ•ด๋‹น ๋ฌธ์ œ๋Š” ์ด์ „ ๊ณ„๋‹จ๊นŒ์ง€ ๊ณ„์‚ฐ๋œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฐพ์•„๊ฐ€๋ฉฐ ํ˜„์žฌ ๊ณ„๋‹จ๊นŒ์ง€ ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
29+
# n๋ฒˆ์งธ ๊ณ„๋‹จ๊นŒ์ง€ ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” (n-1๋ฒˆ์งธ๊นŒ์ง€ ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜) + (n-2๋ฒˆ์งธ๊นŒ์ง€ ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜)์ด๋‹ค.
30+
# ์ด๋Š” ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ด์šฉํ•ด memoization์„ ํ•˜๋ฉฐ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
31+
def climbStairs(self, n: int) -> int:
32+
memo = {}
33+
34+
def dfs(n):
35+
# n์ด 0 ๋˜๋Š” 1์ผ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•๋งŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— memo์— 1์„ ๋„ฃ๊ณ  returnํ•ด์ค€๋‹ค.
36+
if n <= 1:
37+
memo[n] = 1
38+
return memo[n]
39+
40+
# memoization์„ ์ด๋ฏธํ•œ ๊ฒฝ์šฐ์—๋Š” memo์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๊บผ๋‚ด returnํ•ด์ค€๋‹ค.
41+
if n in memo:
42+
return memo[n]
43+
44+
# (n๋ฒˆ์งธ๊นŒ์ง€ ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜) = (n-1๋ฒˆ์งธ๊นŒ์ง€ ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜) + (n-2๋ฒˆ์งธ๊นŒ์ง€ ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜)
45+
memo[n] = dfs(n - 1) + dfs(n - 2)
46+
return memo[n]
47+
48+
return dfs(n)

0 commit comments

Comments
ย (0)