[백준] 3079 입국심사

새싹·2021년 9월 2일
2

알고리즘

목록 보기
5/49

💡문제 풀이

구글링했습니다..
X시간동안 한번 심사에 5초 걸리는 심사관이 검사할 수 있는 사람 수는 X/5명이다.
해당 방법을 기억하고, 각각의 심사관들이 X시간동안 검사할 수 있는 사람의 합이 전체 명수보다 크거나 같으면, 현재 가장 작은 시간과 비교하여, 작은 것을 result에 넣어주고, 최대크기는 mid값에서 1을 줄여준다.
그렇지 않으면, 정답일 가능성이 없기 때문에, 최소값에서 mid+1를 해주고, 다시 계산해준다.
최대값이 최소값보다 크거나 작을때까지 진행한다.

참고 블로그

📋코드

n, m = map(int, input().split())
t = list()
for i in range(n):
    t.append(int(input()))

start = 0
end = max(t) * m

result = 0
while start <= end:
    total = 0
    mid = (start + end) // 2

    for x in t:
        total += mid // x
    if total >= m:
        result = mid
        end = mid - 1
    else:
        start = mid + 1

print(result)

0개의 댓글