https://school.programmers.co.kr/learn/courses/30/lessons/43236
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.Arrays;
class Solution {
public int solution(int distance, int[] rocks, int n) {
int[] distances = new int[rocks.length + 1];
Arrays.sort(rocks);
int previousPoint = 0;
for (int i = 0; i < rocks.length; i++) {
int rock = rocks[i];
distances[i] = rock - previousPoint;
previousPoint = rock;
}
distances[distances.length - 1] = distance - rocks[rocks.length - 1];
int result = binarySearch(distance, rocks, n, distances);
return result;
}
private int binarySearch(int distance, int[] rocks, int n, int[] distances) {
int start = 0;
int end = distance + 1;
while (start < end) {
int mid = (start + end) / 2;
if (isValidMinimumDistance(n, distances, mid)) {
start = mid + 1;
} else {
end = mid;
}
}
return start - 1;
}
private boolean isValidMinimumDistance(int n, int[] distances, int minDistance) {
int temp = 0;
for (int distance : distances) {
distance += temp;
if (distance >= minDistance) {
temp = 0;
continue;
}
if (n-- == 0) {
return false;
}
temp = distance;
}
return true;
}
}
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 (3) | 2024.12.13 |
---|---|
Lv.3 아이템 줍기 (0) | 2024.08.16 |
Lv.3 다단계 칫솔 판매 (0) | 2024.08.03 |
Lv.3 부대복귀 (0) | 2024.06.11 |
2018 KAKAO BLIND RECRUITMENT[1차] / 셔틀버스 (0) | 2024.06.11 |