Tags
- Java
- PGM
- ๊ต์ฌ
- ์๋ฎฌ๋ ์ด์
- ์ ์๋ก
- greedy
- Brute Force Algorithm
- ๋ฌธ์์ด
- queue
- SpringBoot
- ์๋ฃ๊ตฌ์กฐ
- stack
- ๊ตฌํ
- ๊ทธ๋ํ ํ์
- ๋๋น ์ฐ์ ํ์
- DP
- ๋ฐฑํธ๋ํน
- CodingTest
- ์ ๋ ฌ
- dfs
- BFS
- BOJ
- ์ํ
- Dynamic Programming
- Study
- LV2
- Python
- sort
- ๊น์ด ์ฐ์ ํ์
- ๊ทธ๋ํ ์ด๋ก
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2343 : ๊ธฐํ ๋ ์จ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- N๊ฐ์ ์์์ M๊ฐ์ ๋ธ๋ฃจ๋ ์ด์ ๋๋ ์ ์ฅํ๋ ค๊ณ ํ๋ค.
- ํ๋์ ๋ธ๋ฃจ๋ ์ด ํฌ๊ธฐ์ ์ต์๊ฐ์ ๊ตฌํ๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ๋ธ๋ฃจ๋ ์ด ํฌ๊ธฐ๋ฅผ ์ด์ง ํ์์ผ๋ก ์ฐพ๋๋ค.
- ์ต์ ํฌ๊ธฐ๋ N๊ฐ์ ์์ ์ค ์ต๋๊ฐ
- ์ต๋ ํฌ๊ธฐ๋ N๊ฐ์ ์์์ ์ดํฉ
- ์ค์๊ฐ์ ์์์ผ๋ก M๊ฐ์ ๋ธ๋ฃจ๋ ์ด์ ๋ชจ๋ ์ ์ฅํ ์ ์์ผ๋ฉด ํฌ๊ธฐ๋ฅผ ์ค์ฌ๋ณด๊ณ ,
๋ชจ๋ ์ ์ฅํ ์ ์์ผ๋ฉด ์ ์ฅ ํฌ๊ธฐ๋ฅผ ๋๋ ค๋ณด๋ ์์ผ๋ก ํ์ํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
st = new StringTokenizer(br.readLine());
int start = 0; // ์์ ์ธ๋ฑ์ค :
int end = 0;
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
start = Math.max(start, arr[i]);
end += arr[i];
}
while (start <= end) {
int mid = (start + end) / 2;
int sum = 0;
int cnt = 0;
for (int i = 0; i < N; i++) {
if (sum + arr[i] > mid) {
sum = 0;
cnt++;
}
sum += arr[i];
}
if (sum > 0) cnt++;
if (cnt > M) start = mid + 1;
else end = mid - 1;
}
bw.write(Integer.toString(start));
bw.flush();
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ด์งํ์์ผ๋ก ๋ธ๋ฃจ๋ ์ด ํฌ๊ธฐ์ ์ต์๊ฐ์ ๊ตฌํ๋ค.
- ์์ ์ธ๋ฑ์ค๋ ์์ ์ค ์ต๋๊ฐ(๋ธ๋ฃจ๋ ์ด๊ฐ ์ด ๋ณด๋ค ์์ผ๋ฉด ์ ์ฅํ ์ ์๋ค)
- ๋ง์ง๋ง ์ธ๋ฑ์ค๋ ์์์ ์ดํฉ(๋ธ๋ฃจ๋ ์ด๊ฐ ๋ ์ปค์ง ํ์๊ฐ ์๋ค)
- ์ค์๊ฐ mid๋ ํ์ฌ ๋ธ๋ฃจ๋ ์ด์ ํฌ๊ธฐ์ด๋ค.
- sum์ ํ์ฌ ๋ธ๋ฃจ๋ ์ด์ ์ ์ฅํ ์์ ๊ธธ์ด์ ํฉ, cnt๋ ํ์ฌ๊น์ง ์ฌ์ฉํ ๋ธ๋ฃจ๋ ์ด์ ๊ฐ์์ด๋ค.
- ์ ์ฅํ ์์์ด mid๋ณด๋ค ๊ธธ์ด์ง๋ฉด cnt๋ฅผ + 1ํ๋ค.
- ๋ชจ๋ ์์์ ํ์ธํ ํ ๋ค์ ํ์์ ์งํํ๋ค.
- cnt > M ์ด๋ฉด, ๋ธ๋ฃจ๋ ์ด ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ค๋ ๊ฒ์ด๋ฏ๋ก start๋ฅผ mid+1๋ก ๋ฐ๊พผ๋ค.
- cnt <= M ์ด๋ฉด, ๋ธ๋ฃจ๋ ์ด ๊ณต๊ฐ์ด ์ ํฉํ๊ฑฐ๋ ๋์ณค๋ค๋ ๊ฒ์ด๋ฏ๋ก end๋ฅผ mid-1๋ก ๋ฐ๊พผ๋ค.
๐ธ end ๐ธ
- ์ด์ง ํ์์ ๋จ์ ๋ฐฐ์ด ํ์์ ์ด์ฉํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ ์ ์ฉํ ๋ฌธ์ ์ด๋ค.
- ์ด๋ ๊ฒ ์ฐ์ธ๋ค๋ ๊ฒ์ ์๊ณ ์์์ง๋ง, ์์ง ์ต์ํด์ง์ง ์์๋ค.
- ์ด๋ฐ ๋ฐฉ์์ ๋ฌธ์ ๋ฅผ ๋ ํ์ด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
- ์ด๋ฐ ๋ฐฉ์์ ์ด์ง ํ์์ ๋งค๊ฐ ๋ณ์ ํ์์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_1715 : ์นด๋ ์ ๋ ฌํ๊ธฐ (0) | 2024.02.11 |
---|---|
BOJ_1300 : K๋ฒ์งธ ์ (0) | 2024.02.05 |
BOJ_11404 : ํ๋ก์ด๋ (0) | 2024.01.31 |
BOJ_1517 : ๋ฒ๋ธ ์ํธ (0) | 2024.01.26 |
BOJ_2638 : ์น์ฆ (0) | 2024.01.25 |