Programmers - 입국심사

SJ0000·2022년 6월 7일
0

문제 링크

이분탐색 문제.
이분탐색이 무엇인지는 알고있었지만, 이 문제에 어떻게 적용해야 할 지 방법이 떠오르지 않아서
검색으로 풀이를 보고 이해하였다.

모든 사람이 심사를 받는데 걸리는 시간의 최소값을 구해야 한다.
이 때 시간의 범위를 [0 ~ 가장 오래 걸린 심사 시간] 으로 설정하고
시간을 이분탐색한다.

def process(times, minutes):
    x = list(map(lambda time: minutes//time, times))
    return sum(x)


def solution(n, times):
    times = sorted(times)
    left = 0
    right = times[-1]*n
    answer = 0
    while left <= right:
        mid = (left+right)//2
        result = process(times, mid)

        if result < n:
            # mid초 안에 작업완료 불가능한 경우
            left = mid+1
        else:
            # mid초 안에 작업이 가능한 경우
            right = mid-1
            answer = mid

    return answer
profile
잘하고싶은사람

0개의 댓글