코드
종료조건
1. sum_request가 budget을 넘지 않는 경우
2. request에 들어있는 값 사이에서 예산 타협점을 찾는 경우
3. request에 들어있지 않은 값에서 예산 타협점을 찾는 경우
처음에 3번을 생각 못해서 start를 min(request)로 했다가 틀렸다. 케이스를 잘 생각하자.
m = int(input())
request = list(map(int, input().split()))
budget = int(input())
sum_request = sum(request)
result = 0
start = 1
end = max(request)
while (start <= end):
if sum_request <= budget:
result = max(request)
break
new_budget = []
mid = (start + end) // 2
for i in request:
if i <= mid: new_budget.append(i)
else: new_budget.append(mid)
if sum(new_budget) <= budget:
result = mid
start = mid + 1
else: end = mid - 1
print(result)
'백준' 카테고리의 다른 글
[백준] 2776번 암기왕 파이썬 코드 (0) | 2023.09.06 |
---|---|
[백준] 1654번 랜선 자르기 파이썬 코드 (0) | 2023.09.06 |
[백준] 1072번 게임 파이썬 코드 (0) | 2023.09.05 |
[백준] 2805번 나무 자르기 파이썬 코드 (0) | 2023.09.05 |
[백준] 1920번 수 찾기 파이썬 코드 (0) | 2023.09.04 |