프로그래머스/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