문제
https://www.acmicpc.net/problem/2512
설계
- 이분탐색
- 백준 [2805. 나무자르기] 문제와 연결하니 좀 더 쉽게 접근할 수 있었다.
N = int(input())
arr = list(map(int, input().split()))
M = int(input())
start, end = 1, max(arr)
switch = 1
while switch:
mid = (start + end) // 2
sumV = 0
for i in arr: # 상한액 기준 합 계산
if mid > i:
sumV += i
else:
sumV += mid
if start > end: # 종료 조건
switch = 0
if sumV <= M: # 국가예산 범위
start = mid + 1
else:
end = mid - 1
print(mid)
'PS (Problem Solving) > Baekjoon' 카테고리의 다른 글
[백준] 6236. 용돈 관리 (0) | 2022.07.15 |
---|---|
[백준] 2343. 기타 레슨 (0) | 2022.07.14 |
[백준] 2805. 나무 자르기 (0) | 2022.07.10 |
[백준] 5052. 전화번호 목록 (0) | 2022.06.29 |
[백준] 14606. 피자(small) (0) | 2022.05.17 |