66<Solution 1>
77
88Time Complexity: O(n)
9- - n์ ๋ฐฐ์ด์ ๊ธธ์ด๋งํผ ํ ๋ฒ ์ํ
9+ - ๋ฐฐ์ด์ ํ ๋ฒ ์ํ (๋ฐฐ์ด์ ๊ธธ์ด = n)
1010
1111Space Complexity: O(1)
1212- ์ถ๊ฐ ๊ณต๊ฐ ์ฌ์ฉ ์์
1313
14- ํ์ด๋ฐฉ๋ฒ:
14+ ํ์ด๋ฐฉ๋ฒ:
15+ - ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ํ์ฉ
16+ - ๋งค ์ง์ ์์ ๊ฐ ์ ์๋ ์ต๋ ๊ฑฐ๋ฆฌ๋ง์ ๊ธฐ๋กํจ
17+ - ๊ฐ ์์น์์ greedyํ๊ฒ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๊ฐ ์ ์๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํจ
15181. max_reach ๋ณ์๋ก ํ์ฌ๊น์ง ๋๋ฌ ๊ฐ๋ฅํ ์ต๋ ๊ฑฐ๋ฆฌ ์ ์ฅ
16192. ๋ฐฐ์ด์ ์ํํ๋ฉด์:
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