λ¬Έμ
λ¬Έμ λ§ν¬ https://www.acmicpc.net/problem/1654
- μ€μμμ μ체μ μΌλ‘ Kκ°μ λμ μ κ°μ§κ³ μλ€.
- κ·Έλ¬λ Kκ°μ λμ μ κΈΈμ΄κ° μ κ°κ°μ΄λ€. λ°μ±μμ λμ μ λͺ¨λ Nκ°μ κ°μ κΈΈμ΄μ λμ μΌλ‘ λ§λ€κ³ μΆμκΈ° λλ¬Έμ Kκ°μ λμ μ μλΌμ λ§λ€μ΄μΌ νλ€.
- μλ₯Ό λ€μ΄ 300cm μ§λ¦¬ λμ μμ 140cm μ§λ¦¬ λμ μ λ κ° μλΌλ΄λ©΄ 20cmλ λ²λ €μΌ νλ€. (μ΄λ―Έ μλ₯Έ λμ μ λΆμΌ μ μλ€.)
- νΈμλ₯Ό μν΄ λμ μ μλ₯΄κ±°λ λ§λ€ λ μμ€λλ κΈΈμ΄λ μλ€κ³ κ°μ νλ©°, κΈ°μ‘΄μ Kκ°μ λμ μΌλ‘ Nκ°μ λμ μ λ§λ€ μ μλ κ²½μ°λ μλ€κ³ κ°μ νμ.
- κ·Έλ¦¬κ³ μλ₯Ό λλ νμ μΌν°λ―Έν° λ¨μλ‘ μ μκΈΈμ΄λ§νΌ μλ₯Έλ€κ³ κ°μ νμ. Nκ°λ³΄λ€ λ§μ΄ λ§λλ κ²λ Nκ°λ₯Ό λ§λλ κ²μ ν¬ν¨λλ€.
- μ΄λ λ§λ€ μ μλ μ΅λ λμ μ κΈΈμ΄λ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
- 첫째 μ€μλ μ€μμμ΄ μ΄λ―Έ κ°μ§κ³ μλ λμ μ κ°μ K, κ·Έλ¦¬κ³ νμν λμ μ κ°μ Nμ΄ μ λ ₯λλ€.
- Kλ 1μ΄μ 10,000μ΄νμ μ μμ΄κ³ , Nμ 1μ΄μ 1,000,000μ΄νμ μ μμ΄λ€.
- κ·Έλ¦¬κ³ νμ K β¦ N μ΄λ€. κ·Έ ν Kμ€μ κ±Έμ³ μ΄λ―Έ κ°μ§κ³ μλ κ° λμ μ κΈΈμ΄κ° μΌν°λ―Έν° λ¨μμ μ μλ‘ μ λ ₯λλ€. λμ μ κΈΈμ΄λ 2^31-1λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
- 첫째 μ€μ Nκ°λ₯Ό λ§λ€ μ μλ λμ μ μ΅λ κΈΈμ΄λ₯Ό μΌν°λ―Έν° λ¨μμ μ μλ‘ μΆλ ₯νλ€.
μμ΄λμ΄
- μ΄λΆνμμ νμ©ν΄μ νμλ€.
- λμ κΈΈμ΄λ₯Ό μ λ ₯λ°μΌλ©΄μ μ°Ύμ μ΅λκ°μ κ°μ§κ³ μ΄λΆνμμ νλλ° μμμ μ 1, λμ μ μ΅λκ°μΌλ‘ μ΄λΆνμμ νλ€.
- μμμ κ³Ό λμ μ λν΄μ 2λ₯Ό λλ κ°μΌλ‘ λμ λ€μ λλ΄μ λ, λμ¨ λͺ«λ€μ λν κ°μ΄ νμν λμ κ°μλ³΄λ€ μλ€λ©΄ λμ κΈΈμ΄κ° λ 짧μμΌλλ―λ‘ μμμ μ 1λ‘ λμ μ (μμμ + λμ ) / 2 - 1λ‘ μ‘κ³ λ€μ μ΄λΆνμμ λλ Έλ€.
- λ§μ½ νμν λμ κ°μλ³΄λ€ κ°κ±°λ ν¬λ€λ©΄ λμ κΈΈμ΄λ₯Ό (μμμ + λμ ) / 2 λ‘ κ°±μ ν΄μ€λ€.
- κ·Έλ¦¬κ³ λμ κΈΈμ΄κ° λ κΈΈμ΄λλλ―λ‘ μμμ μ (μμμ + λμ ) / 2 + 1λ‘ μ‘κ³ λμ μ μ΅λκ°μΌλ‘ μ‘κ³ λ€μ μ΄λΆνμμ λλ Έλ€.
- κ³μ μ΄λΆνμμ λ리λ€κ° λμ μ΄ μμμ λ³΄λ€ κΈΈμ΄μ§ κ²½μ°, ν¨μλ₯Ό μ’ λ£νλ€.
κ²ͺμ μνμ°©μ€
- λ§μ΄λ νλ Έλ€... μ²μμλ μ λ§ μ½κ² μκ°νκ³ μ΅μκ°μ μ°Ύμμ κ±°κΈ°μ 1μ© λΉΌλ©΄μ κ·Έ κ°μΌλ‘ λμ λ€μ λλ λͺ«λ€μ λνμ λ νμν λμ κ°μλ³΄λ€ κ°κ±°λ ν¬λ€λ©΄ λ°λ³΅λ¬Έμ λ©μΆλ λ°©μμΌλ‘ νμλ€.
- κ·Έλ°λ° λ΄κ° νλ κ°κ³Όν μ¬μ€μ΄ μμλ€... λͺ¨λ λμ μ μΈ νμκ° μλ€λ λ»μ΄μλ€...
- κ·Έ νλ‘ μ΅μκ°μ μ΅λκ°μΌλ‘ λ°κΎΈκ³ νμμ§λ§ μκ°μ΄κ³Όκ° λμκ³ μ΄λΆ νμμΌλ‘ νκ² λμλ€.
- κ·Έ λ€μλ λ§μ΄...λ.. νλ Έλλ°... μ΄λΆνμ λ°©λ²μ΄ μμ νμ§ μμ λ§μ μνμ°©μ€λ₯Ό κ²ͺμ κ³Όμ μ΄λ€... γ γ
- κ·Έ μΈμλ νμ λ²μλ₯Ό μλ―Ένλ λ³μλ€μ longνμ μ μ¨μ€μΌνμλλ° intλ₯Ό μΌμλ€... γ γ (1 + (2^31-1) μμ μ€λ²νλ‘κ° λ°μνκΈ° λλ¬Έμ΄λ€...)
- κ·Έλλ μλ§μ μνμ°©μ€λ€ νμ λ¬Έμ λ₯Ό νΈλκΉ λΏλ―νλ€...!
μ½λ
import java.io.*;
import java.util.*;
public class BOJ1654 {
static long max;
static long result;
static int K;
static int N;
static int lans[];
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
// κ°μ§κ³ μλ λμ κ°μ
K = Integer.parseInt(st.nextToken());
// νμν λμ κ°μ
N = Integer.parseInt(st.nextToken());
// λμ μ μ₯ λ°°μ΄
lans = new int[K];
// μ΅λκ°μ μ μ₯ν λ³μ
max = Integer.MIN_VALUE;
for(int i = 0; i < K; i++){
int l = Integer.parseInt(br.readLine());
// λ°°μ΄μ μ μ₯
lans[i] = l;
// μ΅λκ°μ΄ μ
λ ₯λ°μ μλ³΄λ€ ν¬λ€λ©΄
// μ
λ ₯λ°μ μλ₯Ό μ΅μκ°μΌλ‘ κ°±μ
if(l > max){
max = l;
}
}
// κ²°κ³Όκ°μ μ μ₯ν λ³μ
result = 0;
cutting(1, max);
System.out.println(result);
}
// λμ μλ₯΄λ ν¨μ
public static void cutting(long s, long l){
// μμμ μ΄ λμ λ³΄λ€ λ 컀μ§λ€λ©΄ μ’
λ£
if(l - s < 0){
return;
}
// λμ μ κΈΈμ΄λ₯Ό (μμμ + λμ )/2λ₯Ό ν΄μ€
long len = (s + l) / 2;
// μλ₯Έ λμ μ κ°μ
long cnt = 0;
// λ°λ³΅λ¬Έμ ν΅ν΄ λμ λ€μ μλΌμ λͺκ° λμ€λμ§ λν¨
for(int j = 0; j < K; j++){
cnt = cnt + (lans[j] / len);
}
// λ§μ½ μλ₯Έ λμ λ€μ κ°μκ° νμν λμ κ°μλ³΄λ€ ν¬κ±°λ κ°λ€λ©΄
if(cnt >= N){
// μ€κ°κ°κ³Ό λμ μ κΈ°μ€μΌλ‘ λ€μ ν¨μλ₯Ό λλ¦Ό
result = len;
cutting(len + 1, l);
}
// λ§μ½ κ°μκ° μλ€λ©΄ λμ μ κΈΈμ΄κ° λ μμμΌλλ€λ λ»μ΄λ―λ‘
else{
// μμμ κ³Ό μ€κ°μ μ κΈ°μ€μΌλ‘ λ€μ ν¨μλ₯Ό λλ¦Ό
cutting(s, len - 1);
}
}
}
'μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] BOJ 1764 λ£λ³΄μ‘ (2) | 2024.07.23 |
---|---|
[Java] BOJ 1874 μ€ν μμ΄ (14) | 2024.07.23 |
[Java] BOJ 2108 ν΅κ³ν (2) | 2024.07.22 |
[Java] BOJ 1966 νλ¦°ν° ν (0) | 2024.07.21 |
[Java] BOJ 1929 μμ ꡬνκΈ° (0) | 2024.07.21 |