File tree Expand file tree Collapse file tree 1 file changed +65
-0
lines changed Expand file tree Collapse file tree 1 file changed +65
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ ํ์ด 1
3
+ - memo ๋ฐฐ์ด์ ์ด์ฉํ์ฌ n-1๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ 0๋ฒ์งธ ์ธ๋ฑ์ค ๋ฐฉํฅ์ผ๋ก ํ์ํ์ฌ ํ์ดํ ์ ์์ต๋๋ค
4
+ memo[i] = i๋ฒ์งธ ์ธ๋ฑ์ค์์ ์ถ๋ฐํ์ ๋ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ๋๋ฌํ ์ ์๋์ง ์ฌ๋ถ
5
+
6
+ Big O
7
+ - N: ์ฃผ์ด์ง ๋ฐฐ์ด nums์ ๊ธธ์ด
8
+ - Time complexity: O(N)
9
+ - Space complexity: O(N)
10
+ - ํ์ด 2๋ฅผ ์ด์ฉํ๋ฉด O(1)์ผ๋ก ์ต์ ํํ ์ ์์ต๋๋ค
11
+ */
12
+
13
+ func canJump (nums []int ) bool {
14
+ n := len (nums )
15
+
16
+ if nums [0 ] == 0 && n > 1 {
17
+ return false
18
+ }
19
+
20
+ memo := make ([]bool , n )
21
+ memo [n - 1 ] = true
22
+
23
+ for i := n - 2 ; i >= 0 ; i -- {
24
+ for j := 1 ; j <= nums [i ]; j ++ {
25
+ if i + j >= n {
26
+ break
27
+ }
28
+ if memo [i + j ] {
29
+ memo [i ] = true
30
+ break
31
+ }
32
+ }
33
+ }
34
+
35
+ return memo [0 ]
36
+ }
37
+
38
+ /*
39
+ ํ์ด
40
+ - ํ์ด 1์ ์ ๊ด์ฐฐํ๋ฉด memo๋ฐฐ์ด์ ๋ชจ๋ ๊ฐ์ ๊ฐ์ง๊ณ ์์ ํ์๊ฐ ์๋ค๋ ๊ฑธ ์ ์ ์์ต๋๋ค
41
+ memo ๋ฐฐ์ด ๋์ ์, ๋ฌธ์ ์ ์กฐ๊ฑด๋๋ก ๋ง์ง๋ง ์ธ๋ฑ์ค๊น์ง ๊ฐ ์ ์๋ ๊ฐ์ฅ ์ข์ธก์ ์ธ๋ฑ์ค๋ง ๊ธฐ๋กํฉ๋๋ค (leftmost)
42
+
43
+ Big O
44
+ - N: ์ฃผ์ด์ง ๋ฐฐ์ด nums์ ๊ธธ์ด
45
+ - Time complexity: O(N)
46
+ - Space complexity: O(1)
47
+ */
48
+
49
+ func canJump (nums []int ) bool {
50
+ n := len (nums )
51
+
52
+ if nums [0 ] == 0 && n > 1 {
53
+ return false
54
+ }
55
+
56
+ leftmost := n - 1
57
+
58
+ for i := n - 2 ; i >= 0 ; i -- {
59
+ if i + nums [i ] >= leftmost {
60
+ leftmost = i
61
+ }
62
+ }
63
+
64
+ return leftmost == 0
65
+ }
You canโt perform that action at this time.
0 commit comments