LeetCode 55 - Jump Game โ
๋ฌธ์ ์ค๋ช โ
nums
๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋, ์ฒ์ ์ธ๋ฑ์ค์์ ์์ํ์ฌ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ๋๋ฌํ ์ ์๋์ง ํ๋จํ๋ ๋ฌธ์ ์
๋๋ค. ๊ฐ ์์ nums[i]
๋ ํด๋น ์ธ๋ฑ์ค์์ ์ต๋ ๋ช ์นธ๊น์ง ์ ํํ ์ ์๋์ง๋ฅผ ์๋ฏธํฉ๋๋ค.
์ ๊ทผ ๋ฐฉ๋ฒ - Greedy (๊ทธ๋ฆฌ๋) ๋ฐฉ์ โ
ํต์ฌ ์์ด๋์ด โ
- ๋งค ์๊ฐ ํ์ฌ ์์น์์ ๊ฐ ์ ์๋ ์ต๋ ๊ฑฐ๋ฆฌ(maxReach) ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ํ์ฌ ์ธ๋ฑ์ค๊ฐ maxReach๋ณด๋ค ํฌ๋ค๋ฉด ๋ ์ด์ ์์ผ๋ก ์งํํ ์ ์์ผ๋ฏ๋ก
false
๋ฅผ ๋ฐํํฉ๋๋ค. - ๋๊น์ง ๋๋ฌํ๋ฉด
true
๋ฅผ ๋ฐํํฉ๋๋ค.
์ฝ๋ โ
typescript
function canJump(nums: number[]): boolean {
let maxReach = 0
for (let i = 0; i < nums.length; i++) {
if (i > maxReach) return false // ํ์ฌ ์์น์ ๋๋ฌ ๋ถ๊ฐ๋ฅ
maxReach = Math.max(maxReach, i + nums[i])
if (maxReach >= nums.length - 1) return true // ๋ง์ง๋ง ์ธ๋ฑ์ค ๋๋ฌ ๊ฐ๋ฅ
}
return true
}
์๊ฐ ๋ฐ ๊ณต๊ฐ ๋ณต์ก๋ โ
๊ตฌ๋ถ | ๋ณต์ก๋ |
---|---|
์๊ฐ ๋ณต์ก๋ | O(n) |
๊ณต๊ฐ ๋ณต์ก๋ | O(1) |
์ฃผ์ ํฌ์ธํธ โ
- ์ต์ ํ๋ Greedy ์ ๊ทผ๋ฒ
- ๋งค ์๊ฐ ๋๋ฌ ๊ฐ๋ฅํ ์ต๋ ๊ฑฐ๋ฆฌ๋ง ์ ๊ฒฝ ์ฐ๋ ๋จ์ํ ๋ก์ง
- ์กฐ๊ธฐ ์ข ๋ฃ ์กฐ๊ฑด์ ํตํด ๋ถํ์ํ ์ฐ์ฐ ์ต์ํ