이분 탐색으로 어떻게 접근해야 할지 몰라서 어려웠다...
수의 범위는 1부터 가장 시간이 적게 걸리는 심사대에서 모든 사람이 심사받는 경우의 수로 설정하고,
만약 해당 시간 안에 n명의 사람을 다 검사할 수 있으면 mid를 answer에 저장해주고 right=mid-1과 break를 해주었다
해당 시간 안에 모든 사람의 검사를 마치지 못했다면 start=mid+1을 통해 시간을 늘려주었다
소스 코드
def solution(n, times):
answer = 0
right = min(times) * n
left = 1
while left <= right:
mid = (left + right) // 2
tmp = n
for i in times:
tmp -= mid // i
if tmp <= 0:
answer = mid
right = mid - 1
break
if tmp > 0:
left = mid + 1
return answer
def solution(n, times):
answer = 0
start, end, mid = 1, times[-1] * n, 0
while start < end:
mid = (start + end) // 2
total = 0
for time in times:
total += mid // time
if total >= n:
end = mid
else:
start = mid + 1
answer = start
return answer