본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 13702번 이상한 술집

by 현장 2022. 5. 19.

-Code

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
mak = [int(input()) for _ in range(n)]
left, right = 1, max(mak)
result = 0

while left <= right:
    mid = (left + right) // 2
    cnt = sum([i // mid for i in mak])

    if cnt >= m:
        result = mid
        left = mid + 1
    else:
        right = mid - 1
print(result)

이전 문제와 비슷하나 최소값을 0으로 하면 제로디바이드 오류가 생깁니다. 그래서 문제를 찾은 후 해당 부분을 해결하였습니다.