BOJ - 13702

주의·2024년 1월 28일
0

boj

목록 보기
131/214

백준 문제 링크
이상한 술집

❓접근법

  1. 주전자의 용량을 array에 받아주고, 정렬한다.
  2. 초기값 start = 1, end = max(array), cnt = 0으로 지정한다.
  3. 기본 이분 탐색 코드에서 array의 원소를 mid로 나눴을 때의 몫을
    cnt에 더해준다.
  • 모두 다 더한 cnt가 K보다 작다면 start = mid + 1
  • 모두 다 더한 cnt가 K보다 크거나 같다면 end = mid - 1, result = mid
  1. result를 반환하면 끝!

👌🏻코드

N, K = map(int, input().split())

array = []
for _ in range(N):
    array.append(int(input()))
    
array.sort()

start = 1
end = max(array)
result = 0

while start <= end:
    
    mid = (start + end) // 2
    cnt = 0
    
    for x in array:
        if x >= mid:
            cnt += x // mid
            
    if cnt < K:
        end = mid - 1
        
    else:
        start = mid + 1
        result = mid
    
print(result)

0개의 댓글