티스토리 뷰
문제 링크입니다 : https://www.acmicpc.net/problem/2343
2343번: 기타 레슨
강토는 자신의 기타 레슨 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 레슨이 들어가는데, 블루레이를 녹화할 때, 레슨의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경��
www.acmicpc.net
이분 탐색!
#include <iostream>
#include <vector>
using namespace std;
inline long long countBlueRay(const vector<int>& lesson, long long mid) {
long long cnt = 1;
long long temp = mid;
for(const auto& el : lesson) {
if(temp - el < 0) {
temp = mid - el;
cnt++;
} else {
temp -= el;
}
}
if(temp < 0) cnt++;
return cnt;
}
int main() {
int N, M;
cin >> N >> M;
vector<int> lesson(N);
long long low = 0;
for(int i = 0; i < N; i++) {
cin >> lesson[i];
if(low < lesson[i]) {
low = lesson[i];
}
}
long long high = 1000000000;
long long mid, result;
while(low < high) {
mid = (low + high) / 2;
long long blueRayNum = countBlueRay(lesson, mid);
if(blueRayNum > M) {
low = mid + 1;
} else {
result = mid;
high = mid;
}
}
cout << result;
return 0;
}
개발 환경 : vscode
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
백준 - 1654 랜선 자르기 (0) | 2020.08.19 |
---|---|
백준 - 6236 용돈 관리 (0) | 2020.08.18 |
백준 - 2512 예산 (0) | 2020.08.14 |
백준 - 2805 나무 자르기 (0) | 2020.08.14 |
백준 - 9465 스티커 (0) | 2020.08.14 |
댓글