[BOJ] 2343 기타 레슨

이강혁·2025년 1월 16일
0

백준

목록 보기
46/60

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

기타 레슨 강의 만들어서 블루레이로 배포하려는데 강의 순서 지키면서 m개이 블루레이에 나눠서 담으려고 할 때 각 블루레이의 길이가 최소가 되도록 하는 문제이다. 모든 블루레이 길이는 같아야한다.

바로 바이너리 서치로 접근했다.

Python

n, m = map(int, input().split())

# 이진탐색인듯

lectures = list(map(int, input().split()))

start = max(lectures)

end = sum(lectures)
answer = 0

while start <= end:
    mid = (start + end) // 2

    count = 1
    sum = 0
    for l in lectures:
        if sum + l > mid:
            count += 1
            sum = 0
        sum += l
    if count > m:
        start = mid + 1
    else:
        answer = mid
        end = mid - 1

print(answer)

만족하는 최소값을 찾아야하기에 end쪽에 <= 조건을 주었고 거기에 answer를 업데이트 하는 로직도 넣어서 해결했다.

profile
사용자불량

0개의 댓글

관련 채용 정보