프로그래머스/lv.3

(프로그래머스) lv.3 입국심사

bingual 2024. 1. 16. 15:10
반응형

 

https://school.programmers.co.kr/learn/courses/30/lessons/43238

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제풀이

최대 연산 수행 횟수는 10억 * 10억이기에 이분탐색을 사용

def solution(n, times):
    answer = 0
    # 최소 시간은 1분, 최대 시간은 가장 느린 심사관이 모든 사람을 처리하는 경우
    start, end = 1, max(times) * n

    while start <= end:
        mid = (start + end) // 2
        total = 0

        # 각 심사대에서 처리할 수 있는 사람 수 계산
        for time in times:
            total += mid // time

        # 심사를 기다리는 사람 수가 목표치보다 작으면 시간을 늘려야 함
        if total < n:
            start = mid + 1
        # 심사를 기다리는 사람 수가 목표치보다 크면 시간을 줄여야 함
        else:
            answer = mid
            end = mid - 1

    return answer