CodingTest/Java
BOJ_2343 : κΈ°ν λ μ¨
Soom_1n
2024. 2. 5. 13:19
2343λ²: κΈ°ν λ μ¨
κ°ν λ μμ μ κΈ°ν κ°μ λμμμ λΈλ£¨λ μ΄λ‘ λ§λ€μ΄ νλ§€νλ €κ³ νλ€. λΈλ£¨λ μ΄μλ μ΄ Nκ°μ κ°μκ° λ€μ΄κ°λλ°, λΈλ£¨λ μ΄λ₯Ό λ Ήνν λ, κ°μμ μμκ° λ°λλ©΄ μ λλ€. μμκ° λ€λ°λλ κ²½
www.acmicpc.net
πΈ λ¬Έμ λΆμ πΈ
- 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