Coding Test
[프로그래머스] 입국심사
상상쓰
2021. 5. 28. 10:13
https://programmers.co.kr/learn/courses/30/lessons/43238
코딩테스트 연습 - 입국심사
n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한
programmers.co.kr
문제 분류가 이분 탐색으로 되어있어서 그것에 맞게 풀었다.
일어날 수 있는 최솟값인 times[0] 과 최댓값인 times[0] * n 을 가지고 이분 탐색하여 적절한 값을 찾았다.
mid 를 정해서 일어날 수 있는 시간이면 -1, 일어날 수 없는 시간이면 +1 을 해서 일어날 수 있는 동시에 가장 최소인 값을 구할 수 있다.
def solution(n, times):
answer = 0
times.sort()
start = times[0]
end = times[0] * n
while start <= end:
mid = (start + end) // 2
cnt = 0
for i in times:
cnt = cnt + (mid // i)
if cnt >= n:
answer = mid
break
if cnt >= n:
end = mid - 1
else:
start = mid + 1
return answer
print(solution(6, [7, 10])) # 28