Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 2343] 기타 레슨 본문
반응형
이분 탐색으로 문제에서 요구하는 블루레이 크기를 구하는 문제다.
1. 최소값은(left) 레슨의 수 중 가장 작은값으로 한다.
2. 임의로 정한 블루레이 크기((left + right)/2)에 레슨을 순차적으로 담는다.
2-1. 레슨의 길이가 블루레이의 크기를 초과하게 된다면 블루레이 크기를 증가시킨다.
3. 블루레이의 개수가 m 보다 작다면 최대값(right)를 줄인다.
3.-1. 블루레이의 개수가 m 보다 같거나 크다면 최소값을 줄인다.
public class Main {
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 left = 0;
int right = 0;
for(int i=0; i<n; i++) {
a[i] = sc.nextInt();
right += a[i];
left = left < a[i] ? a[i] : left;
}
while(left <= right) {
int mid = (left + right)/2;
int sum = 0;
int cnt = 0;
for(int i=0; i<n; i++) {
if(sum + a[i] > mid) {
sum = 0;
cnt++;
}
sum += a[i];
}
if(sum != 0) cnt++;
if(cnt <= m) right = mid-1;
else left = mid+1;
}
System.out.println(left);
}
}
반응형
'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글
[백준 2110] 공유기 설치 (0) | 2019.05.15 |
---|---|
[백준 6236] 용돈 관리 (0) | 2019.05.13 |
[백준 13015] 별 찍기 - 23 (0) | 2019.05.13 |
[백준 10994] 별 찍기 - 19 (0) | 2019.05.13 |
[백준 1120] 문자열 (0) | 2019.05.11 |
Comments