프로그래머스 - 43238 입국심사
문제
43238 입국심사
풀이
- 입국 심사에 걸리는 시간은 1 ~ 가장 긴 심사 시간 * 입국심사를 기다리는 사람 수이다.
- 이 시간을 기준으로 이진 검색을 한다.
답
kotlin code
1
2
3
4
5
6
7
8
9
10
class Solution {
fun solution(n: Int, times: IntArray): Long = solution(1L, times.maxOf { it } * n.toLong(), n, times)
tailrec fun solution(min: Long, max: Long, n: Int, times: IntArray): Long {
if(min > max) return min
val mid = (min + max) / 2
val count = times.sumOf { mid / it }
return if(count < n) solution(mid + 1, max, n, times) else solution(min, mid - 1, n, times)
}
}
This post is licensed under CC BY 4.0 by the author.