프로그래머스 알고리즘

wook2·2021년 6월 21일
0

알고리즘

목록 보기
1/117
post-custom-banner

프로그래머스 입국심사

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를 정답값에 넣어주어 정답을 저장하였다.

profile
꾸준히 공부하자
post-custom-banner

0개의 댓글