티스토리 뷰

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

 

2805번: 나무 자르기

첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보

www.acmicpc.net

 

최초 max값을 구할 때 Math.max() 함수 써서 구했더니

 StackSizeExceeded 

이 에러가 계속 떠서 Math.max() 사용하지 않고 구했더니 해결됨.

const fs = require('fs');
const [n,t] = fs.readFileSync("./dev/stdin").toString().trim().split("\n");

const N = n.split(' ')[1];
const trees =[];
let max = 0;
t.split(' ').forEach(v=>{
  v = +v;
  if(+v>max) max=v;
  trees.push(v);
})

let min = 0;
let answer = 0;
while(min<=max){
  let mid = Math.floor((min+max)/2);
  let cnt =0; 
  trees.forEach(tree=>{
    let garbage = tree-mid;
    if(garbage>0) cnt+=garbage
  })
  if(cnt>=N){
    if(mid>answer) answer=mid;
    min=mid+1;
  }else{
    max=mid-1
  }
}
console.log(answer)
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함