프로그래머스 입국심사
https://programmers.co.kr/learn/courses/30/lessons/43238
문제의 핵심은 시간을 기준으로 이분탐색을 적용하는것
각 시간별로 입국심사를 몇명 할 수 있는지를 계산하고 그 인원에 맞추어 시간을 이분탐색으로 찾는 문제였다.
def solution(n, times): times.sort() max_time = times[-1]*n mid_time = 0 min_time = 1 answer = max_time while(min_time < max_time): mid_time = (min_time + max_time) // 2 checked= 0 for time in times: checked += mid_time // time if checked < n: min_time = mid_time + 1 else: max_time = mid_time answer = min_time return answer
이분탐색은 항상 범위를 신경써서 해결해야한다.
위의 방식은 시간을 줄이는 경우에 최대시간을 중간값으로 정하고 줄여나갔다.
그렇기 때문에 left가 점점 mid로 다가옴에 따라 left가 right와 값이 같아지는 순간이 임계가 되었고, 그 전에 left를 정답값에 넣어주어 정답을 저장하였다.