입국심사 - 프로그래머스 - Level 3

nnoobbaagguu·2022년 7월 29일
0

알고리즘 공부

목록 보기
3/4

입국심사 - 프로그래머스 - Level 3

이분탐색 문제로, 모든 사람들이 심사를 받는데 걸리는 시간의 최솟값을 이분탐색한다.

먼저 이분탐색의 시작 값과 끝 값을 정해줘야 한다. 시작 값은 심사관이 한 명을 심사할 때 걸리는 시간이 최솟값인 1분인 심사관이 입국을 기다리는 사람보다 같거나 많은 경우로, 1(분)으로 설정한다. 끝 값은 입국을 기다리는 사람이 최댓값인 10억명이고 심사관이 한 명을 심사할 때 걸리는 시간이 최댓값인 10억분이며 심사관이 단 한 명인 경우로, (10억 * 10억)(분)으로 설정한다.

start = 1
end = 1000000000 ** 2

mid 변수는 심사를 받는데 주어지는 제한 시간을 의미한다. 각 심사관에 대해 mid를 한 사람을 심사하는데 걸리는 시간으로 나누어 몫을 구하면 이 제한 시간 동안 이 심사관이 심사할 수 있는 사람의 최대 수를 의미한다.

answer = 0
while start <= end:
    mid = (start + end) // 2
    total = 0
    for item in times:
        total += mid // item
    if total >= n:
        answer = mid
        end = mid - 1
    else:
        start = mid + 1
return answer

0개의 댓글