문제 링크
문제 해설
2805 - 나무 자르기와 유사한 이진 탐색 문제다. 차이점은 목표치와 동일하면 바로 종료할 수 있던 나무 자르기와 달리 이 문제는 목표치(필요한 랜선의 개수)에 도달하더라도 랜선의 길이를 최대로 하기 위해 계속 검사를 해야한다는 점이다.
Code
fun main() = with(System.`in`.bufferedReader()) {
val (k, n) = readLine().split(' ').map { it.toInt() }
val cable = LongArray(k) { readLine().toLong() }
var start = 0L
var end = cable.maxOrNull()!! + 1
while (start + 1 < end) {
var lan = 0L
val length = (start + end) / 2
for (c in cable) {
lan += c / length
}
if (lan >= n) start = length
else end = length
}
println(start)
}
'Algorithm > BOJ' 카테고리의 다른 글
[Kotlin] 백준 5430 : AC (1) | 2022.12.04 |
---|---|
[Kotlin] 백준 7662 : 이중 우선순위 큐 (1) | 2022.12.04 |
[Kotlin] 백준 1874 : 스택 수열 (0) | 2022.12.02 |
[Kotlin] 백준 2108 : 통계학 (0) | 2022.12.02 |
[Kotlin] 백준 4949 : 균형잡힌 세상 (1) | 2022.12.02 |
댓글