[프로그래머스] 입국 심사

·2023년 12월 10일
0

알고리즘

목록 보기
11/23

문제

[프로그래머스] - 입국 심사

접근 방법

  • 정답 최솟값은 1(start), 최댓값은 max(times)*n(end)
  • 위의 start와 end를 가지고 이분탐색 시작.
    1. mid 시간 동안 심사 받은 사람 수는 mid 시간에서 각 심사관의 소요시간으로 나눈 몫의 합
    2. 통과한 사람의 수가 n보다 작다면 start = mid + 1, n보다 크다면 end = mid - 1
    3. 최종적으로 n명이 통과할 수 있는 최소 시간을 구해야 하므로, mid 동안 심사 받은 사람 == n이어도 계속해서 탐색한다.

작성 코드

def solution(n, times):
    answer = 0
    start = 1
    end = n * max(times)
    
    while start <= end : 
        mid = (start+end) // 2
        people = 0
        
        for time in times:
            people += mid // time
        
        if people >= n :
            end = mid - 1
            answer = mid
        else:
            start = mid + 1
    
    return answer

0개의 댓글