Skip to content

Commit 456074b

Browse files
committed
Add second solution for Jump game problem
1 parent 1acaaad commit 456074b

File tree

1 file changed

+36
-7
lines changed

1 file changed

+36
-7
lines changed

โ€Žjump-game/KwonNayeon.pyโ€Ž

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,18 @@
66
<Solution 1>
77
88
Time Complexity: O(n)
9-
- n์€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ํ•œ ๋ฒˆ ์ˆœํšŒ
9+
- ๋ฐฐ์—ด์„ ํ•œ ๋ฒˆ ์ˆœํšŒ (๋ฐฐ์—ด์˜ ๊ธธ์ด = n)
1010
1111
Space Complexity: O(1)
1212
- ์ถ”๊ฐ€ ๊ณต๊ฐ„ ์‚ฌ์šฉ ์—†์Œ
1313
14-
ํ’€์ด๋ฐฉ๋ฒ•:
14+
ํ’€์ด๋ฐฉ๋ฒ•:
15+
- ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ™œ์šฉ
16+
- ๋งค ์ง€์ ์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ๋งŒ์„ ๊ธฐ๋กํ•จ
17+
- ๊ฐ ์œ„์น˜์—์„œ greedyํ•˜๊ฒŒ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•จ
1518
1. max_reach ๋ณ€์ˆ˜๋กœ ํ˜„์žฌ๊นŒ์ง€ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ ์ €์žฅ
1619
2. ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ:
17-
- ํ˜„์žฌ ์œ„์น˜๊ฐ€ max_reach๋ณด๋‹ค ํฌ๋ฉด ๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅ
20+
- ํ˜„์žฌ ์œ„์น˜๊ฐ€ max_reach๋ณด๋‹ค ํฌ๋ฉด ๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅ
1821
- max_reach๋ฅผ ํ˜„์žฌ ์œ„์น˜์—์„œ ์ ํ”„ ๊ฐ€๋Šฅํ•œ ๊ฑฐ๋ฆฌ์™€ ๋น„๊ตํ•ด ์—…๋ฐ์ดํŠธ
1922
- max_reach๊ฐ€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ณด๋‹ค ํฌ๋ฉด ๋„๋‹ฌ ๊ฐ€๋Šฅ
2023
"""
@@ -36,12 +39,38 @@ def canJump(self, nums: List[int]) -> bool:
3639
"""
3740
<Solution 2>
3841
39-
Time Complexity:
40-
-
42+
Time Complexity: O(n^2)
43+
- ์ตœ์•…์˜ ๊ฒฝ์šฐ ๊ฐ ์ธ๋ฑ์Šค์—์„œ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์ ํ”„๋ฅผ ์‹œ๋„
4144
42-
Space Complexity:
43-
-
45+
Space Complexity: O(n)
46+
- ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋”•์…”๋„ˆ๋ฆฌ + ์žฌ๊ท€ ํ˜ธ์ถœ ์Šคํƒ
4447
4548
ํ’€์ด๋ฐฉ๋ฒ•:
49+
- DFS + ๋ฉ”๋ชจ์ด์ œ์ด์…˜ (๋ฐฑํŠธ๋ž˜ํ‚น)
50+
- ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์ ํ”„ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋˜ ์ค‘๋ณต ๊ณ„์‚ฐ์„ ๋ฐฉ์ง€ํ•จ
4651
"""
52+
class Solution:
53+
def canJump(self, nums: List[int]) -> bool:
54+
memo = {} # ๋ฉ”๋ชจ์ด์ œ์ด์…˜์œผ๋กœ ์ตœ์ ํ™”
55+
56+
def dfs(index):
57+
# ๋์— ๋„๋‹ฌํ–ˆ์œผ๋ฉด True ๋ฐ˜ํ™˜
58+
if index >= len(nums) - 1:
59+
return True
60+
61+
# ์ด๋ฏธ ๊ณ„์‚ฐํ–ˆ์œผ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ์žฌ์‚ฌ์šฉ
62+
if index in memo:
63+
return memo[index]
64+
65+
# ํ˜„์žฌ ์œ„์น˜์—์„œ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ ํ”„๋ฅผ ์‹œ๋„ํ•จ
66+
for jump in range(1, nums[index] + 1):
67+
if dfs(index + jump):
68+
memo[index] = True
69+
return True
70+
71+
# ๋ชจ๋“  ์ ํ”„๋ฅผ ์‹œ๋„ํ•ด๋ด๋„ ๋์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•จ
72+
memo[index] = False
73+
return False
74+
75+
return dfs(0)
4776

0 commit comments

Comments
ย (0)