Skip to content

Commit 0adc250

Browse files
authored
Merge pull request #1550 from KwonNayeon/main
[KwonNayeon] Week 10 Solutions
2 parents c2d5756 + 456074b commit 0adc250

File tree

1 file changed

+47
-3
lines changed

1 file changed

+47
-3
lines changed

โ€Žjump-game/KwonNayeon.py

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,21 @@
33
- 1 <= nums.length <= 10^4
44
- 0 <= nums[i] <= 10^5
55
6+
<Solution 1>
7+
68
Time Complexity: O(n)
7-
- n์€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ํ•œ ๋ฒˆ ์ˆœํšŒ
9+
- ๋ฐฐ์—ด์„ ํ•œ ๋ฒˆ ์ˆœํšŒ (๋ฐฐ์—ด์˜ ๊ธธ์ด = n)
810
911
Space Complexity: O(1)
1012
- ์ถ”๊ฐ€ ๊ณต๊ฐ„ ์‚ฌ์šฉ ์—†์Œ
1113
12-
ํ’€์ด๋ฐฉ๋ฒ•:
14+
ํ’€์ด๋ฐฉ๋ฒ•:
15+
- ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ™œ์šฉ
16+
- ๋งค ์ง€์ ์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ๋งŒ์„ ๊ธฐ๋กํ•จ
17+
- ๊ฐ ์œ„์น˜์—์„œ greedyํ•˜๊ฒŒ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•จ
1318
1. max_reach ๋ณ€์ˆ˜๋กœ ํ˜„์žฌ๊นŒ์ง€ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ ์ €์žฅ
1419
2. ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ:
15-
- ํ˜„์žฌ ์œ„์น˜๊ฐ€ max_reach๋ณด๋‹ค ํฌ๋ฉด ๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅ
20+
- ํ˜„์žฌ ์œ„์น˜๊ฐ€ max_reach๋ณด๋‹ค ํฌ๋ฉด ๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅ
1621
- max_reach๋ฅผ ํ˜„์žฌ ์œ„์น˜์—์„œ ์ ํ”„ ๊ฐ€๋Šฅํ•œ ๊ฑฐ๋ฆฌ์™€ ๋น„๊ตํ•ด ์—…๋ฐ์ดํŠธ
1722
- max_reach๊ฐ€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ณด๋‹ค ํฌ๋ฉด ๋„๋‹ฌ ๊ฐ€๋Šฅ
1823
"""
@@ -30,3 +35,42 @@ def canJump(self, nums: List[int]) -> bool:
3035
return True
3136

3237
return True
38+
39+
"""
40+
<Solution 2>
41+
42+
Time Complexity: O(n^2)
43+
- ์ตœ์•…์˜ ๊ฒฝ์šฐ ๊ฐ ์ธ๋ฑ์Šค์—์„œ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์ ํ”„๋ฅผ ์‹œ๋„
44+
45+
Space Complexity: O(n)
46+
- ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋”•์…”๋„ˆ๋ฆฌ + ์žฌ๊ท€ ํ˜ธ์ถœ ์Šคํƒ
47+
48+
ํ’€์ด๋ฐฉ๋ฒ•:
49+
- DFS + ๋ฉ”๋ชจ์ด์ œ์ด์…˜ (๋ฐฑํŠธ๋ž˜ํ‚น)
50+
- ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์ ํ”„ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋˜ ์ค‘๋ณต ๊ณ„์‚ฐ์„ ๋ฐฉ์ง€ํ•จ
51+
"""
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)
76+

0 commit comments

Comments
ย (0)