[백준 2343번] 기타 레슨 (이분탐색, python, binary search)
728x90
반응형
2343번: 기타 레슨
강토는 자신의 기타 레슨 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 레슨이 들어가는데, 블루레이를 녹화할 때, 레슨의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경
www.acmicpc.net
이분탐색 자체보다는 각 크기를 잘못 계산하는 바람에 계속 틀렸다
l=min(lesson)으로 해줬었는데 그러면 기준 크기 mid보다 각 음악의 길이가 더 클 때 문제가 된다.
따라서 l=max(lesson)으로 해줘서 최소 한 블루레이 크기에 한 음악은 들어갈 수 있도록 해줘야한다.
import sys
input=sys.stdin.readline
from collections import deque
n,m=map(int,input().split())
lesson=list(map(int,input().split()))
# print(lesson)
l=max(lesson)
r=sum(lesson)
ans=sys.maxsize
while l<=r:
mid=(l+r)//2
cnt=0
sum=0
for i in range(len(lesson)):
if sum+lesson[i]>mid:
cnt+=1
sum=0
sum+=lesson[i]
if sum:
cnt+=1
if cnt>m: # 블루레이 개수가 m보다 커 (각 크기가 작음)
l=mid+1
else:
ans=min(ans,mid)
r=mid-1
print(ans)
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 팰린드롬 만들기 (1254번, 파이썬) (0) | 2020.12.16 |
---|---|
[백준 2644번] 촌수계산 (python, dfs) (0) | 2020.11.26 |
[백준 2206번] 벽 부수고 이동하기 (python, bfs) (0) | 2020.11.26 |
[백준 1918번 ] 후위 표기식 (stack, python) (0) | 2020.11.25 |
[백준 15711번] 환상의 짝꿍 (python, 소수, 에라토스테네스의 체, 골드바흐의 추측) (0) | 2020.11.25 |
TAGS.