시간 제한 : 2초, 난이도 : 실버 1, 백준 : 2343번

package practice30;

import java.util.Scanner;

public class Practice30 {//백준 P2343_블루레이

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); //레슨 개수
		int M = sc.nextInt(); // 블루레이 개수
		
		int[]A = new int[N]; //레슨 데이터 저장 배열
		int start = 0;
		int end = 0;
		for(int i = 0; i < N; i++) {
			A[i] = sc.nextInt();
			if(start < A[i]) //레슨 최대값을 시작 인덱스로 저장
				start = A[i];
			end = end + A[i];	//모든 레슨의 총합을 종료 인덱스로 저장
		}
		while(start <= end) {
			int mid = (start + end) / 2;
			int sum = 0;
			int count = 0;
			for(int i = 0; i < N; i++) {
				if(sum + A[i] > mid) {
					count++;
					sum = 0;
				}
				sum = sum + A[i];
			}
			if(sum != 0)
				count++;
			if(count > M)
				start = mid + 1;
			else
				end = mid - 1;
		}
		System.out.println(start);
		sc.close();
	}

}