문제
대기중인 n명과 각 심사관마다 걸리는 소요 시간이 times가 매개변수로 주어질 때, 모두 통과하는 최소 시간을 구하여라
풀이 과정
1. 이진 탐색을 사용하여 시간을 탐색한 후
2. 해당 시간에 통과할 수 있는 사람의 수를 구한 뒤
3. 통과할 수 있는 사람의 수가 n과 같다면 반환
class Solution {
fun solution(n: Int, times: IntArray): Long {
var start: Long = 0
var end: Long = times.maxOf{it}.toLong() * n
while(start <= end){
val mid: Long = (start + end)/2
var count: Long = 0
for(i in times){
count += mid/i.toLong()
}
if(count < n){
start = mid + 1
}
else{
end = mid -1
}
}
return start
}
}
'코딩 테스트 > 이진탐색' 카테고리의 다른 글
[프로그래머스] 2024 KAKAO WINTER INTERNSHIP 주사위 고르기 with Kotlin (1) | 2024.06.13 |
---|---|
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT 순위 검색 with Kotlin (0) | 2024.04.04 |