문제
https://www.acmicpc.net/problem/2343
2343번: 기타 레슨
강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경
www.acmicpc.net
설계
- 이분탐색
- 백준 문제 설명에 띄어쓰기가 헷갈리게 되어있어 문제를 이해하는데 오래 걸렸다.
- SumV에 남아있는 것을 하나의 묶음으로 처리하는 것이 Point
N, M = map(int, input().split())
arr = list(map(int, input().split()))
# start : 블루레이 중 가장 큰값이 최소값이어야 모두 담을 수 있다.
start, end = max(arr), sum(arr)
switch = 1
while switch:
mid = (start + end) // 2
cnt = 0 # 블루레이의 개수
sumV = 0 # 블루레이의 합
for i in arr:
if sumV + i > mid: # 다음 합계가 mid보다 큰지 확인
sumV = 0
cnt += 1
sumV += i
if sumV: # sumV에 무언가 남아 있으면 하나의 개수로 처리
cnt += 1
if start > end: # 종료 조건
switch = 0
if cnt > M:
start = mid + 1
else:
end = mid - 1
print(start)
'PS (Problem Solving) > Baekjoon' 카테고리의 다른 글
[백준] 1654. 랜선 자르기 (0) | 2022.07.16 |
---|---|
[백준] 6236. 용돈 관리 (0) | 2022.07.15 |
[백준] 2512. 예산 (0) | 2022.07.12 |
[백준] 2805. 나무 자르기 (0) | 2022.07.10 |
[백준] 5052. 전화번호 목록 (0) | 2022.06.29 |