더 좋은답을 향해서 계속 탐색
Stream은 reduction을 도와주는 method이다.
average,sum,max,min 등...
Reduction : 큰 데이터를 가공해서 얻을수있는 정보를 일컫는말.
Stream의 결과값이 int가 아니라면 getAsInt를 사용하여 int로 값을 바꿔줘야 한다!
import java.util.*;
class Main {
public int count(int[] arr, int capacity) {
int count = 1, sum = 0;
for(int x : arr) {
if(sum + x > capacity) {
count++;
sum = x;
}
else sum += x;
}
return count;
}
public int solution(int n,int m, int[ ]arr) {
int answer = 0;
int lt = Arrays.stream(arr).max().getAsInt();
int rt = Arrays.stream(arr).sum();
while(lt<=rt) {
int mid = (lt+rt)/2;
if(count(arr,mid) <= m) {
answer = mid;
rt = mid-1;
}
else lt = mid + 1;
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int m = kb.nextInt();
int[] arr = new int[n];
for(int i=0; i<n; i++) arr[i] = kb.nextInt();
System.out.print(T.solution(n,m, arr));
}
}