녕의 학습 기록

백준_2343 기타 레슨 (이분탐색) 본문

Algorithm/Algorithm 문제

백준_2343 기타 레슨 (이분탐색)

kjyyjk 2024. 1. 25. 12:30

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BJ_2343_기타레슨 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int n, m, i, s, e, mid;
        n = Integer.parseInt(st.nextToken());
        m = Integer.parseInt(st.nextToken());

        int[] arr = new int[n];

        st = new StringTokenizer(br.readLine(), " ");

        int total = 0;
        int max = 0;

        for(i=0; i<n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
            total += arr[i];
            if(arr[i] > max) {
                max = arr[i];
            }
        }

        //블루레이의 크기로 이분탐색
        s = max;
        e = total;

        while(s<=e) {
            mid = (s+e)/2;
            int cnt = 0;
            int sum = 0;

            for(i=0; i<n; i++) { // 해당 블루레이 크기(mid)로 필요한 블루레이 수 구하기
                sum += arr[i];
                if(sum > mid) {
                    cnt++;
                    sum = arr[i];
                }
            }

            if(sum != 0) {
                cnt++;
            }

            if(cnt > m) {
                s = mid + 1;
            } else {
                e = mid - 1;
            }
        }

        System.out.println(new StringBuilder().append(s)); //s>e 가 되면 s가 정답(최소크기)
    }

}

 

 

2343번: 기타 레슨

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

www.acmicpc.net