https://www.acmicpc.net/problem/2512
해결 방법
> 이분 탐색을 이용한다.
> 처음 들어온 예산들의 합이 총 예산과 같으면 예산들 중 max를 출력한다.
> 같지 않다면 이분 탐색을 이용한다.
더보기
num = int(input())
_list = list(map(int, input().split()))
total = int(input())
if sum(_list) == total:
print(max(_list))
else:
low = 0
high = max(_list)
result = 0
while low <= high:
mid = (low + high) // 2
tmp = 0
for i in _list:
tmp += min(i, mid)
if tmp > total:
high = mid - 1
else:
result = mid
low = mid + 1
print(result)
'알고리즘' 카테고리의 다른 글
백준_10816_숫자카드2(Counter) (0) | 2020.02.20 |
---|---|
백준_1654_랜선 자르기(이분 탐색) (0) | 2020.02.19 |
백준_15997_승부 예측 (0) | 2020.02.17 |
백준_10815_숫자 카드(이분 탐색) (0) | 2020.02.16 |
백준_2805_나무 자르기(이분 탐색) (0) | 2020.02.15 |
댓글