코딩하는 포메라니안 2021. 9. 1. 20:26

1. 문제

 

 

 

2. 풀이 과정

def solution(n, times):
    
    def b_search(s, e):
        while s <= e:
            m = (s+e)//2
            #(전체 걸린 시간)//(각 times) = (각 심사관이 맡은 사람 수)
            c = 0
            for t in times:
                c += m//t
                
            if c < n:
                s = m + 1
            else:
                e = m - 1
            #c==n이면 왼쪽 구역 선택
            #이유 :c==n을 만족시키는 시간들 중에 최소를 구해야 함
        return s
            
    return b_search(min(times), (n//len(times)+1)*max(times))