컴퓨터를 공부하고자 마음먹은지 N일차
[200일차]boj1654 node.js 본문
728x90
백준1654 랜선자르기
CODE
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
31
32
33
34
35
36
37
38
39
40
41
|
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const input = [];
rl.on("line", function (line) {
input.push(input.length ? +line : line);
const [K, N] = input[0].split(" ");
if (input.length === +K + 1) {
input.shift();
let length = 0;
const binarySearch = (left, right) => {
while (left <= right) {
let mid = ~~((left + right) / 2);
let wire = input.reduce((sum, w) => {
return sum + ~~(w / mid);
}, 0);
if (wire >= N) {
if (mid > length) {
length = mid;
}
left = mid + 1;
} else {
right = mid - 1;
}
}
};
binarySearch(
1,
input.reduce((max, n) => {
return n > max ? n : max;
}),
);
console.log(length);
rl.close();
}
}).on("close", function () {
process.exit();
});
|
cs |
description
처음엔 길이를 하나씩줄이는 방법으로 풀었으나 시간초과가 났고,
이분탐색부분을 재귀로 구현을하면 스택사이즈 오류가 난다.
반복문을 활용해서 풀어주고,
이분탐색의 두번째 인자는 랜선중 가장 긴값을 넣은것..
간혹 다량의 값을 Math.max의 인자로 넣으면 백준에서 오류남..
이 문제를 기점으로 실버찍었다!
자축!
'🧠PS' 카테고리의 다른 글
[206일차]boj1929 nodejs (0) | 2021.04.07 |
---|---|
[205일차]boj1920 node.js (0) | 2021.04.06 |
[116일차] 프로그래머스 / N으로 표현하기 (0) | 2021.01.03 |
[111일차]프로그래머스/ k번째 수 (javascript) (1) | 2020.12.29 |
[50일차]백준/BOJ14681 (Node.js) (0) | 2020.10.28 |
Comments