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

[백준/파이썬] 2792번 보석 상자

by 현장 2022. 5. 20.

-Code

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
j = [int(input()) for _ in range(m)]
left, right = 1, max(j)
while left <= right:
    cnt = 0
    mid = (left + right) // 2
    for i in j:
        cnt += i // mid
        if i % mid != 0:
            cnt += 1

    if cnt > n:
        left = mid + 1

    else:
        right = mid - 1
print(left)

처음에는 최대 질투심을 구하기위해 max값을 넣어서 작성을 했습니다. 하지만 if문 작성과 max값을 사용하는 방법이 이상해서 틀린분 부분에 대한 내용을 찾아보니 굳이 max를 사용할 필요도 없고 left값을 가져오면 됐고 if문도 조금만 고치면 되어서 해결이 되었습니다.