https://programmers.co.kr/learn/courses/30/lessons/43236
최소 거리를 이분 탐색한다.
rocks를 순회하면서 거리가 더 짧으면 제거한다 (skip)
제거한 개수가 n이하이면 정답 후보가 된다.
function solution(distance, rocks, n) {
rocks.sort((a, b) => a - b).push(distance);
var ans = 0, l = 1, r = distance;
while (l <= r) {
var m = Math.floor((l + r) / 2);
var prev = 0, remove = 0;
rocks.filter(rock => {
if (rock - prev < m)
remove++;
else
prev = rock;
})
if (remove <= n){
ans = Math.max(ans, m);
l = m + 1;
}
else
r = m - 1;
}
return ans;
}