-Code
import sys
input = sys.stdin.readline
s, c = map(int, input().split())
pa = [int(input()) for _ in range(s)]
start, end = 1, max(pa)
pa_result = 0
while start <= end:
mid = (start + end) // 2
cnt = sum(i // mid for i in pa)
if cnt >= c:
pa_result = max(pa_result, mid)
start = mid + 1
else:
end = mid - 1
print(sum(pa) - pa_result * c)
최대 값이라는 부분과 start와 end의 범위때문에 시간이 조금 걸렸습니다. 더 많이 이분 탐색에 대해 풀어봐야 할 것같습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 15810번 풍선 공장 (0) | 2022.05.20 |
---|---|
[백준/파이썬] 2792번 보석 상자 (0) | 2022.05.20 |
[백준/파이썬] 13702번 이상한 술집 (0) | 2022.05.19 |
[백준/파이썬] 16401번 과자 나눠주기 (0) | 2022.05.19 |
[백준/파이썬] 16960번 스위치와 램프 (0) | 2022.05.19 |