점프 가능한 최대 거리를 갱신하며 nums
배열을 순회하면 된다.
만일 특정 인덱스의 요소를 순회할 때, 현재 기록된 최대 점프 가능 거리를 초과하였다면 도착 불가능하므로 false
를 반환하는 구조이다.
function canJump(nums: number[]): boolean {
// 현재 점프 가능한 최대거리
let maxJumpIdx = nums[0]
for(let i = 1; i < nums.length; i++) {
// 점프 가능 거리를 지나쳤다면 목표지 도달 불가
if(maxJumpIdx < i) return false
const curNum = nums[i]
const canJumpIdx = i + nums[i]
// 최대 점프거리 갱신
maxJumpIdx = Math.max(maxJumpIdx, canJumpIdx)
}
return true
};