입국심사

Tiffany ·2024년 3월 15일
0

Programmers

목록 보기
6/15

#심사자가 최대 몇명을 입국심사를 해줄수 있는지 구함 
def canHandle(times, timeGiven):
    total = 0
    for t in times:
        total += (timeGiven // t) # 17mintues/7= 2persons 17mintues/10= 1 person 
    return total 

    #return sum(time // t for t in times)

def solution(n, times): 
    left, right = 0, max(times) * n
    #더적은 시간으로 시도할수있도록 범위를 줄여나가 #최소의 심사시간을 리턴 
    while left <= right:
        mid = (left + right) // 2
         
        maxHandle = canHandle(times, mid)
        
        if maxHandle >= n:
            right = mid - 1 
        else:
            left = mid + 1

    return left

이분탐색의 개념은 어렵지 않은데 문제를 이해하는데 어려웠다.
포인트는 입국심사를 하는 시간을 최소로 줄여나가는 것이고, 심사관이 최대 몇 명을 심사할 수 있는지와 주어진 입국심사하는 사람의 수를 비교하는 것이 필요했다. 이분탐색의 핵심인 미드가 바로 최대 몇 명을 할 수 있는지 구하는 함수의 매개변수로 주어지고, 미드를 업데이트할 때마다 그 함수를 부르고 그 함수가 리턴하는 값이 주어진 입국심사자의 수 보다 작거나 크거나에 따라 오른쪽/왼쪽 값을 감소/증가시킨다.

profile
Love what you do and don't quit.

0개의 댓글