상상쓰

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

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
Comments