본문 바로가기

파이썬

[BOJ PYTHON] 2343번 기타레슨

https://www.acmicpc.net/problem/2343

 

2343번: 기타 레슨

강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경

www.acmicpc.net

 

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
course = list(map(int, input().split()))
max_v = max(course)
s = max_v
e = sum(course)
result = int(1e9)
while s <= e:
    mid = (s+e)//2
    tmp = 0
    cnt = 1
    for i in range(n):
        if tmp+course[i] <= mid:
            tmp += course[i]
        else:
            cnt += 1
            tmp = course[i]
        if cnt > m:
            break
    if cnt > m:
        s = mid+1
    else:
        e = mid-1
        if max_v <= mid:
            result = min(result, mid)
print(result)

 

<풀이방법>

이분탐색으로 풀이하는데 주의할 점은 반으로 나눈 값이 젤 높은 값 보다 작아버리게 되는 경우가 있어서 그 부분을 

if문으로 제외시켜줘야 한다.

'파이썬' 카테고리의 다른 글

[백준 파이썬] 2493번 탑  (0) 2022.08.22
[백준 파이썬] 2565번 전깃줄  (0) 2022.08.21
[BOJ PYTHON] 1080번 행렬  (0) 2022.08.17
[BOJ][PYTHON] 6603번 로또  (0) 2022.08.15
[백준 파이썬] 12852번 1로 만들기 2  (0) 2022.08.11