문제 링크
1654번: 랜선 자르기
첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그
www.acmicpc.net
문제 해설
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 |
댓글