๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/2805
๋ฌธ์ ํ์ด
๋ฌธ์ ์กฐ๊ฑด์ ๋ณด๊ณ ์ด๋ถํ์์ด๋ผ๋ ๋๋์ ๋ฐ์๋ค. ( ์๋์กฐ๊ฑด ์ฐธ๊ณ )
๋ง์ฝ ์ด๋ถํ์์ ํ์ง ์๊ณ ๋๋ฌด ๋์ด๋ฅผ ํ๋์ฉ ๋ฎ์ถ๋ฉด์ ์ต๋๊ฐ์ ๊ตฌํ๋ ค๋ฉด ๊ดด๋ํ ์ฐ์ฐํ์๊ฐ ๋์จ๋ค.
ํ์ง๋ง ์ด๋ถํ์์ผ๋ก ํ์ํ๋ฉด ๊ณ์ฐํ์๋ฅผ ํ๊ธฐ์ ์ผ๋ก ๋ง์ด ์ค์ผ ์ ์๋ค. ์ด๋ ๊ฒ ํ๊ธฐ์ ์ผ๋ก ์ค์ด๋๋ ์ด์ ๋ ๋๋ฌด ๋์ด์ ๋ฒ์๊ฐ ๋๋ฌด ํฌ๊ธฐ ๋๋ฌธ์ด๋ค. -> ์ด๋ถ๋ถ์ ์ง์ ์ผ์ด์ค๋ฅผ ์ฐ์ ํด์ ํ ์คํธํด๋ณด๋ฉด ์ ์ ์๋ค. )
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
let [N, M] = input[0].split(" ").map((n) => Number(n));
let line = input[1].split(" ").map((n) => Number(n));
let max = Math.max(...line);
let [left, right] = [0, max];
let mid = Math.floor((left + right) / 2);
while (left !== mid) {
let treeLength = 0;
line.forEach((height) => {
if (height > mid) {
treeLength = treeLength + height - mid;
}
});
if (treeLength >= M) {
left = mid;
mid = Math.floor((left + right) / 2);
} else {
right = mid;
mid = Math.floor((left + right) / 2);
}
}
console.log(mid);
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค[node.js] > 10026๋ฒ ์ ๋ก์์ฝ (0) | 2024.12.28 |
---|---|
๋ฐฑ์ค[node.js] > 2667๋ฒ ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (1) | 2024.12.22 |
๋ฐฑ์ค[node.js] > 2630๋ฒ ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2024.12.20 |
๋ฐฑ์ค[node.js] > 1927๋ฒ ์ต์ ํ (0) | 2024.12.19 |
๋ฐฑ์ค[node.js] > 21736๋ฒ ํ๋ด๊ธฐ๋ ์น๊ตฌ๊ฐ ํ์ํด (0) | 2024.12.17 |