[백준알고리즘] 알고리즘 연습 - 2110

krkorklo·2022년 3월 3일
0

백준알고리즘

목록 보기
20/27

2110 - 공유기 설치

https://www.acmicpc.net/problem/2110

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let num = Number(input[0].split(" ")[1]);
let numbers = [];
for(let i=1; i<input.length; i++) {
    if(input[i] != '') {
        numbers.push(Number(input[i]));
    }
}

function answer(arr, num) {
    arr.sort((a, b) => a - b);
    let left = 1;
    let right = arr[arr.length-1] - arr[0];
    let ans = 0;
    while(left<=right) {
        let cnt = 1;
        let mid = Math.floor((left+right)/2);
        let pre = arr[0];
        arr.forEach((n) => {
            if (n - pre >= mid) {
                cnt++;
                pre = n;
            }
        })
        if(cnt >= num) {
            ans = mid;
            left = mid + 1;
        }
        else right = mid - 1;
    }
    return ans;
}

console.log(answer(numbers, num));

또 input 조건문 처리 안해줘서 한참을 헤맸다

ㅎㅎㅎ
...

0개의 댓글