백준_2343 기타 레슨 (이분탐색)Algorithm/Algorithm 문제2024. 1. 25. 12:30
Table of Contents
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가 정답(최소크기)
}
}
'Algorithm > Algorithm 문제' 카테고리의 다른 글
백준_11047 동전0 (그리디) (0) | 2024.01.27 |
---|---|
백준_1300 K번째 수 (이분탐색) (0) | 2024.01.26 |
백준_1920 수 찾기 (이분탐색) (2) | 2024.01.24 |
백준_1167 트리의 지름 (BFS) - 트리의 지름 증명 포함 (0) | 2024.01.24 |
백준_2178 미로 탐색 (BFS) (0) | 2024.01.23 |
@kjyyjk :: 녕의 학습 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!