๐ŸŽฒ ๋ฐฑ์ค€ 2110๋ฒˆ ๊ณต์œ ๊ธฐ ์„ค์น˜

Jeongeunยท2023๋…„ 12์›” 2์ผ

๋ฐฑ์ค€

๋ชฉ๋ก ๋ณด๊ธฐ
141/188

๋ฐฑ์ค€ 2110๋ฒˆ

๐Ÿงธ ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋๋Š”๋ฐ ์•„๋ž˜ ์„ค๋ช… ๋งํฌ๋ฅผ ๋ณด๊ณ  ์ดํ•ด๊ฐ€ ๋˜์—ˆ๋‹ค๐Ÿ˜‚
๐ŸŽจ์ฐธ๊ณ  ์„ค๋ช…
๐ŸŽจ์ฐธ๊ณ  ์ฝ”๋“œ

์ฝ”๋“œ

const fs = require('fs'); 
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const [N, C] = input.shift().split(" ").map(Number);
const houses = input.map(Number).sort((a, b) => a - b);


//์ตœ์†Œ ๊ฐ„๊ฒฉ
let left = 1;
//์ตœ๋Œ€ ๊ฐ„๊ฒฉ
let right = houses[N - 1] - houses[0];


while (left <= right) {
  //๊ฐ„๊ฒฉ
  const mid = Math.floor((left + right) / 2);
//์„ค์น˜๋œ ๊ณต์œ ๊ธฐ ๊ฐœ์ˆ˜
let count = 1;
  let prev = houses[0];
  for (let i = 1; i < N; i++) {
    if (houses[i] - prev >= mid) {
      count++;
      prev = houses[i];
    }
  }

  //๊ฐ„๊ฒฉ์„ ์ค„์—ฌ์•ผํ•จ
  if (count < C) right = mid - 1;
  //๊ฐ„๊ฒฉ์„ ๋Š˜๋ ค์•ผํ•จ
  else left = mid + 1;
}

console.log(right);

0๊ฐœ์˜ ๋Œ“๊ธ€