Coding Test/Practice

백준 2805번 나무 자르기 JavaScript 풀이 [이진 탐색]

yunicornlab 2024. 7. 20. 17:50
반응형

백준 2805번 나무 자르기 문제를 자바스크립트로 이진 탐색 알고리즘을 이용해서 풀어보았다. 

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

 

let path = 'input.txt';

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

let [n, m] = input[0].split(' ').map(Number);
let trees = input[1].split(' ').map(Number);

let start = 1;
let end = Math.max(...trees);
let result = 0;

while (start <= end) {
  let mid = parseInt((start + end) / 2);
  let curRemain = 0;
  for (let i=0; i<n; i++) {
    // curRemain += trees[i] > mid ? trees[i] - mid : 0;
    curRemain += Math.max(trees[i] - mid, 0);
  }

  if (curRemain < m) end = mid - 1;
  else {
    start = mid + 1;
    result = mid;
  }
}
console.log(result)
반응형