BOJ 2805
const input = require("fs")
.readFileSync("./input.txt")
.toString()
.trim()
.split("\n");
const [N, height] = input.shift().split(" ").map(Number);
const tree = input[0]
.split(" ")
.map(Number)
.sort((a, b) => a - b);
let start = 0;
let end = tree[tree.length - 1];
let answer = Number.MIN_SAFE_INTEGER;
while(start <= end) {
let mid = Math.floor((start + end) / 2)
let sum = 0;
for(let x of tree) {
if(x > mid) sum += x-mid;
}
if(sum >= height) {
if(mid > answer) answer = mid;
start = mid+1;
} else {
end = mid - 1;
}
}
console.log(answer);
// binarySearch
감이 안와서 어떻게 접근해야할 지 모르겠다가. 이진탐색으로 푸는 문제라는걸 검색하고, 이진탐색의 알고리즘을 확인 후 풀 수 있었다.
Author And Source
이 문제에 관하여(BOJ 2805), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@scato/BOJ-2805저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)