2025/01/28 3

[leetcode - 45. Jump Game II] java

문제 설명1. 배열이 주어진다.2. 최대 거기 적힌 숫자만큼 점프할 수 있다.3. 목적지에 도달할 수 있는 최소 점프 갯수를 구하면 된다.풀이 과정 - DP 문제인데, 그냥 이중 for문으로 푸니까 쉬웠는데 문제에서 원했던 것은 하나의 for문으로 푸는 것 같았다.- 그래서 문제를 살펴보니(DP라는건 최소를 구하는 배열이니 미리 알고있었어서 이를 통해서 구하는걸로 마음먹음) 한번에 갈 수 있는 위치 중 가장 먼 위치가 목적지가 된다면, 그게 정답이라는 것이었다.풀이 과정은 다음과 같다.1. 먼저 현재 위치에서 점프할 수 있는 최대 거리를 구한다.2. 그리고 과거에 점프해서 도달했던 최대 거리가 지금 위치라면3. (1)에서 구한 최대 거리가 다음번의 최대 거리가 될 것이고4. 목적지에 도달하기 위해서는 점..

알고리즘 공부 2025.01.28

[leetcode - 55. Jump Game] java

문제 설명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 = ne..

알고리즘 공부 2025.01.28

[leetcode - 135. Candy] java

문제 설명1. 배열이 주어진다.2. 모든 학생은 사탕을 최소 1개 이상을 가진다.3. 양 옆 학생 중 나보다 점수가 낮은 녀석들 보다는 사탕을 많이 가져야 한다.3-1. 참고로 나랑 점수가 같으면 어떨지는 상관이 없다.풀이 과정 1. 무조건 사탕을 1개만 받는 사람들을 큐에 넣는다. (양옆이 모두 나보다 크거나 같은 경우)2. 그 사람들부터 시작해서 오른쪽 왼쪽 모두 찾는다.3. 다음에 찾은 친구의 점수가 이전 친구보다 높다면, 사탕을 그보다 1개 이상 더 가지고 있어야 한다.4. 그런데, 그 높은 친구의 반대쪽에도 더 점수가 낮은 학생이 있을 수 있다.5. 우리는 이미 모든 위치에서 찾기로 했다. 결국 최종적으로 어떤 학생은 양옆보다 큰 숫자를 가지고 있으면 된다.6. 이렇게 해서 구한 모든 사탕을 더..

알고리즘 공부 2025.01.28