티스토리 뷰

알고리즘/백준(BOJ)

백준 - 2343 기타 레슨

시나모온 2020. 8. 18. 22:50

문제 링크입니다 : 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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함