55. Jump Game
in Coding Interview on Greedy
정수 배열 숫자가 제공됩니다. 처음에는 배열의 첫 번째 인덱스에 위치하며 배열의 각 요소는 해당 위치에서의 최대 점프 길이를 나타냅니다.
마지막 인덱스에 도달할 수 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
class Solution {
// 마지막 지점에 도착할 수 있나?
// Greedy: O(n)
public boolean canJump(int[] nums) {
// 마지막 인덱스(목표지점)
int last = nums.length - 1;
// 뒤에서 부터 시작해서 마지막 위치에 도착할 수 있는지 앞으로 가면서 역으로 체크한다.
for (int index = nums.length - 2; index >= 0; --index) {
// 현 위치에서 목표지점에 도착할 수 있으면(인덱스에서 점프 길이를 더한값이 타켓인덱스 보다 커야한다)
if (index + nums[index] >= last) {
// 현위치로 목표지점을 옮긴다.
last = index;
}
}
return (last == 0);
}
}