뮤직비디오(결정알고리즘)

Seungmin Lim·2022년 2월 16일
0

코딩문제연습

목록 보기
56/63

결정알고리즘

더 좋은답을 향해서 계속 탐색

Arrays.stream()

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));
		
	}
	
}

풀이방법

핵심키워드

0개의 댓글