본문 바로가기
Algorithm/Baekjoon

3079. 입국심사 (Python)

by 원만사 2022. 2. 25.
반응형
 

3079번: 입국심사

첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000) 다음 N개 줄에는 각 심사대에서 심사를 하는데 걸리는 시간인 Tk가 주어진다. (1 ≤ Tk ≤ 109)

www.acmicpc.net

 

풀이

 친구들이 심사를 마치는데 걸리는 시간에 대해 이분탐색을 하여 해결할 수 있다. left와 right를 설정하고 mid를 구하여 mid초에 대해서 각 심사대에서 몇 명을 심사할 수 있는지를 체크하여 상근이와 친구들의 수인 M보다 클 경우 답을 갱신해주면 된다. 

 

코드

if __name__ == '__main__':
    N, M = map(int, input().split()) # N: 입국심사대 총 개수, M: 상근이와 친구들의 수
    times = []

    for i in range(N):
        times.append(int(input()))

    left = 1
    right = 1_000_000_000_000_000_000

    res = 0

    while left <= right:
        mid = (left + right) // 2

        tmp = 0 # 현재 시간(mid)에 대해서 심사할 수 있는 사람의 수
        for time in times: # 각 심사대에서 몇 명을 심사할 수 있는지 체크
            tmp += mid // time

        if tmp >= M: # M 이상 심사할 수 있으면 답 갱신
            res = mid
            right = mid - 1
        else:
            left = mid + 1

    print(res)
반응형

'Algorithm > Baekjoon' 카테고리의 다른 글

4195. 친구 네트워크 (Python)  (0) 2022.02.28
17182. 우주 탐사선 (Python)  (0) 2022.02.25
15961. 회전 초밥 (Python)  (0) 2022.02.23
11049. 행렬 곱셈 순서 (Python)  (0) 2022.02.23
2631. 줄세우기 (Python)  (0) 2022.02.23

댓글