-
Notifications
You must be signed in to change notification settings - Fork 24
/
P75_2.kt
34 lines (29 loc) · 1.06 KB
/
P75_2.kt
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
package ch18
import java.util.*
class P75_2 {
fun solution(n: Int, times: IntArray): Long {
var answer: Long = 0
var left: Long = 1
// 맨 오른쪽은 (입력값 중 가장 큰 값 * n)을 가능한 최댓값으로 설정
var right = Arrays.stream(times).max().asInt.toLong() * n
// 초기 중앙값은 맨 오른쪽 값으로 설정
var mid = right
while (left <= right) {
var calcN: Long = 0
// 소요 시간(중앙값)을 각 심사관의 시간으로 나누고 합산한 값 계산
for (time in times)
calcN += mid / time
// 합산값이 기다리는 사람 수보다 더 크거나 일치하면 중앙값(소요 시간)을 정답으로 설정
when {
calcN >= n -> {
answer = mid
right = mid - 1
}
else -> left = mid + 1
}
// 중앙값 계산
mid = left + (right - left) / 2
}
return answer
}
}