
당신은 정수 배열 nums를 받습니다. 초기 위치는 배열의 첫 번째 인덱스에 있으며, 배열의 각 요소는 해당 위치에서의 최대 점프 길이를 나타냅니다.
마지막 인덱스에 도달할 수 있는 경우 true를 반환하고, 그렇지 않으면 false를 반환하세요.
예시 1:
입력: nums = [2,3,1,1,4]
출력: true
설명: 인덱스 0에서 1로 1단계 점프한 다음 마지막 인덱스로 3단계 점프합니다.
예시 2:
입력: nums = [3,2,1,0,4]
출력: false
설명: 무슨 일이 있어도 항상 인덱스 3에 도달합니다. 최대 점프 길이는 0이므로 마지막 인덱스에 도달할 수 없습니다.
제약:
class Solution {
public boolean canJump(int[] nums) {
int len = nums.length;
boolean[] dp = new boolean[len];
dp[0] = true; // 시작점은 항상 점프 가능
for(int i = 0; i < len; i++)
if(dp[i])
for(int j = 1; j <= nums[i]; j++){
if(i + j < len)
dp[i + j] = true;
}
return dp[len - 1];
}
}
class Solution {
public boolean canJump(int[] nums) {
int len = nums.length;
boolean[] dp = new boolean[len];
dp[0] = true; // 시작점은 항상 점프 가능
for(int i = 0; i < len; i++)
if(dp[i])
for(int j = 1; j <= nums[i] && i + j < len; j++)
dp[i + j] = true;
return dp[len - 1];
}
}
class Solution {
public boolean canJump(int[] nums) {
int reach=0;
for(int i=0;i<nums.length;i++){
if(reach<i){
return false;
}
reach=Math.max(reach,i+nums[i]);
}
return true;
}
}