defsolution(n, times):defsolution(n, times): people = len(times) answer = 0 min_times = [0] * people
# 처음 사람 들어감 n -= people
while(n>0): answer += 1 for i inrange(people): # 시간이 times의 배수라면 if answer % times[i] == 0: # 사람 감소 if n - 1 == 0: min_times = [x + (2*y) for x,y inzip(min_times,times)] n -= 1 returnmin(min_times)
defsolution(n, times): # 최악의 경우 : 가장 비효율적인 심사관에게 모든 사람이 다 보는것 left, right = 1, max(times) * n answer = 0 while left <= right: mid = (left + right) // 2 people = 0 for i in times: people += mid // i if people >= n: answer = mid right = mid - 1 break # 모든 사람을 심사할 수 없는 경우 # 한심사관에게 주어진 시간을 늘려본다. if people < n: left = mid + 1 return answer