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

krkorklo·2022년 3월 1일
0

백준알고리즘

목록 보기
6/27

2805 - 나무 자르기

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

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

let n = Number(input[0].split(" ")[1]);
let numbers = input[1].split(" ").map((str) => Number(str));

numbers.sort((a, b) => a - b);
var len = numbers.length - 1;
var left = 0;
var right = numbers[len];
var ans = 0;

while(left <= right) {
    var mid = Math.floor((left + right) / 2);
    var sum = 0;
    for(var i=len; i>=0; i--) {
        if (numbers[i] - mid <= 0) break;
        sum += numbers[i] - mid;
    }
    if (sum < n) right = mid - 1;
    else {
        ans = mid;
        left = mid + 1;
    }
}

console.log(ans)

0개의 댓글