# 입국심사
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
arr = []
for _ in range(N):
arr.append(int(input()))
annswer = 0
left, right = 0, max(arr)*M
while left <= right:
mid = (left+right)//2
# 해당 시간으로 입국심사를 할 수 있는 사람 수 구하기
people = 0
for time in arr:
people += mid//time
if people > M:
break
if people < M:
left = mid + 1
else:
right = mid - 1
answer = mid
print(answer)
이분탐색
1. right을 가장 심사가 오래 걸리는 곳에서 모두 검사할 때의 시간으로 초기화
2. 이분탐색
- 해당 시간으로 입국심사를 할 수 있는 사람의 수 구하기
- 사람의 수가 M보다 작으면 left = mid +1
- 아니라면 right = mid-1, answer = mid
3. answer 출력
어디서 봤던 문제였는데 풀고 보니 전에 프로그래머스에서 풀었던 문제였다.
[프로그래머스] 고득점Kit - 이분탐색 : 1. 입국심사 (Lv3)
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 2022번 - 사다리 (파이썬) (0) | 2022.03.27 |
---|---|
[백준] 3649번 - 로봇 프로젝트 (파이썬) (0) | 2022.03.26 |
[백준] 2343번 - 기타 레슨 (파이썬) (0) | 2022.03.25 |
[백준] 2467번 - 용액 (파이썬) (0) | 2022.03.25 |
[백준] 16562번 - 친구비 (파이썬) (0) | 2022.03.25 |