이분탐색 문제.
이분탐색이 무엇인지는 알고있었지만, 이 문제에 어떻게 적용해야 할 지 방법이 떠오르지 않아서
검색으로 풀이를 보고 이해하였다.
모든 사람이 심사를 받는데 걸리는 시간의 최소값을 구해야 한다.
이 때 시간의 범위를 [0 ~ 가장 오래 걸린 심사 시간] 으로 설정하고
시간을 이분탐색한다.
def process(times, minutes):
x = list(map(lambda time: minutes//time, times))
return sum(x)
def solution(n, times):
times = sorted(times)
left = 0
right = times[-1]*n
answer = 0
while left <= right:
mid = (left+right)//2
result = process(times, mid)
if result < n:
# mid초 안에 작업완료 불가능한 경우
left = mid+1
else:
# mid초 안에 작업이 가능한 경우
right = mid-1
answer = mid
return answer