시작이 반

[프로그래머스] 입국심사(python 파이썬) 본문

알고리즘/Programmers

[프로그래머스] 입국심사(python 파이썬)

G_Gi 2021. 3. 11. 16:00
SMALL

이분탐색 문젱이다.

 

최대로 걸리는 시간과 최소로 걸리는 시간을 기준으로 문제를 푼다.

 

심사관이 주어진 시간동안 모든 사람을 처리할 수 있으면 right값을 줄여주고

심사관이 주어진 시간동안 모든 사람을 처리할 수 없으면 left값을 줄여준다.

 

def solution(n, times):
    answer = 0
    left = 1
    right = max(times) * n

    while left <= right:
        mid = (left + right) // 2

        cnt = 0
        for time in times:
            cnt += (mid // time)

        #심사관이 주어진 시간동안 모든 사람을 처리할 수 있으면
        if cnt >= n:
            # 종료되기 전에 answer을 바꿔줌
            right = mid - 1
            answer = mid
        else:
            # 종료 조건 바뀌는 부분
            left = mid + 1

    return answer

solution(6, [7, 10])
LIST