백준 13702 이상한 술집

청천·2022년 7월 31일
0

백준

목록 보기
5/41

이진 탐색 기초 문제
https://www.acmicpc.net/problem/2805
https://www.acmicpc.net/problem/13702 와 매우 유사하다.
문제에서 주어진 '단, 항상 N ≤ K 이다.' 가 중요한 힌트. 핵심을 하나씩 체크하자.

import sys
input = sys.stdin.readline


N, K = map(int, input().rstrip().split())
mak = [int(input()) for _ in range(N)]

s = 0
e = 2**31 - 1
ans = 0


def check(x):
    cnt = 0
    for j in range(len(mak)):
        a = mak[j]
        while a >= x:
            a -= x
            cnt += 1
    return cnt >= K # 잔의 수가 사람 수 보다 많은 수 있다! 체크 체크


while s <= e:
    mid = (s+e) // 2
    if check(mid):
        ans = mid
        s = mid + 1
    else:
        e = mid - 1

print(ans)

조금씩 내 알고리즘 실력이 느는 느낌이다.

0개의 댓글