
이번에는 마구간의 갯수와 거리가 주어지고 말의 갯수가 주어진다. 이 말들을 모두 배치한다고 했을때 가장 서로의 거리가 멀게 배치하려면 얼마의 간격을 두고 배치해야하는가의 문제이다.
예를 들어서, 3마리의 말이 주어지고 마굿간은 [1, 2, 4, 8, 9] 의 간격으로 주어진다고 했을때 3의 간격으로 배치할때 가장 사이가 멀어지며 3마리의 말이 모두다 배치 가능하다.
접근 방법은 어떻게 해야할까?
function stable(horses, stable) {
  stable.sort((a, b) => a - b);
  let lt = 1;
  let rt = stable[stable.length - 1];
  let distance;
  let answer;
  let cnt = 1;
  let lastHorsePos = 0;
  function countHorse(distance) {
    for (let i = 0; i < stable.length; i++) {
      if (stable[i] - stable[lastHorsePos] >= distance) {               
        cnt++;                                                 
        lastHorsePos = i;
      }
    }
 
    lastHorsePos = 0;
  }
  while (lt <= rt) {
    distance = parseInt((lt + rt) / 2);
    countHorse(distance);
    if (cnt >= horses) {
      answer = distance;
      lt = distance + 1;
    } else {
      rt = distance - 1;
    }
    cnt = 1;
  }
  return answer;
}
// 3 ,[1, 2, 8, 4, 9] // 3
// 3, [1, 5, 7, 8, 15, 19, 23, 26] // 11