프로그래머스 43238번 입국심사 풀이 ( 파이썬 )
https://programmers.co.kr/learn/courses/30/lessons/43238
코딩테스트 연습 - 입국심사
n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한
programmers.co.kr
이분 탐색을 이용했는데 right 초기값인 max(times) * n는 심사받는 인원 수에서 최대로 발생할 수 있는 걸리는 시간이다.
예로 n=6, times=[7, 10]인 경우에 6명에서 최대로 걸리는 경우는 time에서 최대값인 10인 상담원을 이용해서 10*6 = 60이 된다.
이제 이분 탐색으로 이 값이 적당한지 확인해야 하는데
for i in times:
temp += mid // i
mid 시간일 때, 심사관마다 몇 명의 심사인원을 검사할 수 있는가에 대한 총합을 temp에 저장했고
temp 값보다 n값이 크면 mid보다 적은 시간만 필요하게 되므로 right를 mid로 바꾼다.
def solution(n, times):
answer = 0
left = 0
right = max(times) * n
while left < right:
mid = (left + right) // 2
temp = 0
for i in times:
temp += mid // i
if temp >= n:
right = mid
else:
left = mid + 1
return left
[ programmers ] 보석 쇼핑 67258번 ( python ) (0) | 2021.09.10 |
---|---|
[ programmers ] 행렬 테두리 회전하기 77485번 ( python ) (0) | 2021.09.08 |
[ programmers ] 거리두기 확인하기 81302번 ( python ) (0) | 2021.09.02 |
[ programmers ] 위클리 챌린지 5주차 84512번 ( python ) (0) | 2021.09.01 |
[ programmers ] 약수의 개수와 덧셈 77884번 ( python ) (0) | 2021.08.25 |