본문 바로가기
Algorithm/baekjoon

[파이썬]baekjoon 3079: 입국심사

by 갈잃자 2023. 2. 18.

https://www.acmicpc.net/problem/3079

 

3079번: 입국심사

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

www.acmicpc.net


이진탐색 문제

 

 초기에 ed 값을 잘못 설정해서 시간초과가 났었다.

 

모든 입국심사를 최대시간이 걸리는 입국심사대에서 처리를 한다고 가정 시, 문제가 쉽게 풀렸음!

n,m = map(int,input().split())
arr = []
for i in range(n):
    arr.append(int(input()))

st = 0
ed = m * max(arr)

result = 0
while st <= ed:
    mid = int((st + ed))//2
    cnt = 0
    for i in range(len(arr)):
        cnt += mid // arr[i]
    # cnt가 많다면
    if cnt >= m:
        ed = mid -1
        result = mid

    # cnt 가 적다면
    if cnt <m:
        st = mid +1
print(result)

댓글