๐ท๐ผ๋ชจ์ฌ๋ด์ ๊ฐ๋ฐ์์ฒ๐ท๐ผ
[JAVA/์ฝ๋ฉํ ์คํธ] ๋ฎค์ง๋น๋์ค(๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ) ๋ณธ๋ฌธ
[JAVA/์ฝ๋ฉํ ์คํธ] ๋ฎค์ง๋น๋์ค(๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ)
์์ผ์ด 2021. 6. 28. 01:10์ค๋ช
์ง๋๋ ์ฝ๋์์๋ ๋ถ์ธ์ถ์ ๊ฐ์ ์กฐ์ํ์ ๋ผ์ด๋ธ ๋์์์ DVD๋ก ๋ง๋ค์ด ํ๋งคํ๋ ค ํ๋ค.
DVD์๋ ์ด N๊ฐ์ ๊ณก์ด ๋ค์ด๊ฐ๋๋ฐ, DVD์ ๋ นํํ ๋์๋ ๋ผ์ด๋ธ์์์ ์์๊ฐ ๊ทธ๋๋ก ์ ์ง๋์ด์ผ ํ๋ค.
์์๊ฐ ๋ฐ๋๋ ๊ฒ์ ์ฐ๋ฆฌ์ ๊ฐ์ ์กฐ์ํ์จ๊ฐ ๋งค์ฐ ์ซ์ดํ๋ค. ์ฆ, 1๋ฒ ๋ ธ๋์ 5๋ฒ ๋ ธ๋๋ฅผ ๊ฐ์ DVD์ ๋ นํํ๊ธฐ ์ํด์๋
1๋ฒ๊ณผ 5๋ฒ ์ฌ์ด์ ๋ชจ๋ ๋ ธ๋๋ ๊ฐ์ DVD์ ๋ นํํด์ผ ํ๋ค. ๋ํ ํ ๋ ธ๋๋ฅผ ์ชผ๊ฐ์ ๋ ๊ฐ์ DVD์ ๋ นํํ๋ฉด ์๋๋ค.
์ง๋๋ ์ฝ๋ ์ ์ฅ์์๋ ์ด DVD๊ฐ ํ๋ฆด ๊ฒ์ธ์ง ํ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด ์ฌ์ ์ ๋ญ๋น๋๋ DVD๋ฅผ ๊ฐ๊ธ์ ์ค์ด๋ ค๊ณ ํ๋ค. ๊ณ ๋ฏผ ๋์ ์ง๋๋ ์ฝ๋๋ M๊ฐ์ DVD์ ๋ชจ๋ ๋์์์ ๋ นํํ๊ธฐ๋ก ํ์๋ค. ์ด ๋ DVD์ ํฌ๊ธฐ(๋ นํ ๊ฐ๋ฅํ ๊ธธ์ด)๋ฅผ ์ต์๋ก ํ๋ ค๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ M๊ฐ์ DVD๋ ๋ชจ๋ ๊ฐ์ ํฌ๊ธฐ์ฌ์ผ ์ ์กฐ์๊ฐ๊ฐ ์ ๊ฒ ๋ค๊ธฐ ๋๋ฌธ์ ๊ผญ ๊ฐ์ ํฌ๊ธฐ๋ก ํด์ผ ํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ฐ์ N(1≤N≤1,000), M(1≤M≤N)์ด ์ฃผ์ด์ง๋ค.
๋ค์ ์ค์๋ ์กฐ์ํ์ด ๋ผ์ด๋ธ์์ ๋ถ๋ฅธ ์์๋๋ก ๋ถ๋ฅธ ๊ณก์ ๊ธธ์ด๊ฐ ๋ถ ๋จ์๋ก(์์ฐ์) ์ฃผ์ด์ง๋ค.
๋ถ๋ฅธ ๊ณก์ ๊ธธ์ด๋ 10,000๋ถ์ ๋์ง ์๋๋ค๊ณ ๊ฐ์ ํ์.
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค๋ถํฐ DVD์ ์ต์ ์ฉ๋ ํฌ๊ธฐ๋ฅผ ์ถ๋ ฅํ์ธ์.
์์ ์ ๋ ฅ 1
9 3 1 2 3 4 5 6 7 8 9
์์ ์ถ๋ ฅ 1
17
ํํธ
์ค๋ช : 3๊ฐ์ DVD์ฉ๋์ด 17๋ถ์ง๋ฆฌ์ด๋ฉด (1, 2, 3, 4, 5) (6, 7), (8, 9) ์ด๋ ๊ฒ 3๊ฐ์ DVD๋ก ๋ น์์ ํ ์ ์๋ค.
17๋ถ ์ฉ๋๋ณด๋ค ์์ ์ฉ๋์ผ๋ก๋ 3๊ฐ์ DVD์ ๋ชจ๋ ์์์ ๋ นํํ ์ ์๋ค.
import java.util.*;
class Main {
public int count(int[] arr, int capacity) {
int cnt = 1, sum =0;
for(int x : arr) {
if(sum+x > capacity) {
cnt ++;
sum=x;
}else {
sum += x;
}
}
return cnt;
}
public void 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;
}
}
System.out.println(answer);
};
public static void main(String args[]) {
Main main = new Main();
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int M = in.nextInt();
int[] arr = new int[N];
for(int i=0; i<N; i++) {
arr[i] = in.nextInt();
}
main.solution(N, M, arr);
}
}
'๊ฐ๋ฐ > ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA/์ฝ๋ฉํ ์คํธ] ์ฌ๊ทํจ์ (0) | 2021.07.13 |
---|---|
[JAVA/์ฝ๋ฉํ ์คํธ] ๋ง๊ตฌ๊ฐ ์ ํ๊ธฐ(๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ) (0) | 2021.06.28 |
[JAVA/์ฝ๋ฉํ ์คํธ] ์ด๋ถ๊ฒ์ (0) | 2021.06.27 |
[JAVA/์ฝ๋ฉํ ์คํธ] ์ขํ ์ ๋ ฌ (0) | 2021.06.27 |
[JAVA/์ฝ๋ฉํ ์คํธ] ์ฅ๋๊พธ๋ฌ๊ธฐ (0) | 2021.06.27 |