-
문제
https://www.acmicpc.net/problem/2805
2805번: 나무 자르기
첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보
www.acmicpc.net
How to Solve ?
function solve(trees, N, M) {trees.sort((a, b) => a - b); // 오름차순 정렬const target = M;let start = trees[0]; // 제일 작은 나무let end = trees[N - 1]; // 제일 큰 나무while (start <= end) {let mid = Math.floor((start + end) / 2); // 중간 크기let log = 0;for (let i = 0; i < trees.length; i++) {if (mid > trees[i]) { // 벌목 크기보다 작으면 패스continue;}log += trees[i] - mid; // 잘린 나무의 길이}if (log >= target) {start = mid + 1;} else {end = mid - 1;}}return end;}let [N, M] = [4, 7];const trees = [20, 15, 10, 17];console.log(solve(trees, N, M));'PS > 백준' 카테고리의 다른 글
[백준_1182] 부분 수열의 합 ( dfs - 자바스크립트 ) (0) 2021.06.09 [백준_2018] 수들의 합5 ( 투포인터 - 자바스크립트) (0) 2021.06.09 [백준_11659] 구간 합 구하기 4 ( 자바스크립트 ) (0) 2021.06.09 [백준_1018] 체스판 다시 칠하기 (완전탐색 - 자바스크립트) (0) 2021.06.09 [ 백준 _ 6588 ] 골드바흐의 추측 ( 수학 - 자바스크립트 ) (1) 2021.06.06