728x90
반응형
문제 설명
1. 배열이 주어진다.
2. 최대 거기 적힌 숫자만큼 점프할 수 있다.
3. 목적지에 도달할 수 있는(목적지에 정확히 가거나 그 이상)지 확인하면 된다.
풀이 과정
1. 간단한 DFS 문제이다.
2. 지금 위치에서 갈 수 있는 모든 곳을 가면서 체크해준다.
3. 그리고 거기서 또 다음 위치로 가서
4. 도달한 곳이 목적지 혹은 그보다 더 갔으면 true이다.
5. (2) 과정에서 이전 경우에 이미 도달했을 수도 있다. 그러면 애는 더이상 체크할 필요가 없다.
코드
class Solution {
private static boolean check[];
private static boolean ans;
public boolean canJump(int[] nums) {
check = new boolean[nums.length];
ans = false;
jump(0, nums);
return ans;
}
private static void jump(int index, int[] nums) {
check[index] = true;
int nextIndex = index + nums[index];
if(nextIndex >= nums.length - 1) {
ans = true;
return;
}
for(int i=index+1; i<=nextIndex; i++) {
if(ans) return;
if(!check[i]) jump(i, nums);
}
}
}
반응형
'알고리즘 공부' 카테고리의 다른 글
[leetcode - 274. H-Index] java (4) | 2025.01.29 |
---|---|
[leetcode - 45. Jump Game II] java (1) | 2025.01.28 |
[leetcode - 135. Candy] java (3) | 2025.01.28 |
[leetcode - 189. Rotate Array] java (1) | 2025.01.27 |
[leetcode - 80. Remove Duplicates from Sorted Array II] java (0) | 2025.01.26 |