λ¬Έμ
λ¬Έμ λ§ν¬ https://www.acmicpc.net/problem/2108
- ν΅κ³νμμ Nκ°μ μλ₯Ό λννλ κΈ°λ³Έ ν΅κ³κ°μλ λ€μκ³Ό κ°μ κ²λ€μ΄ μλ€. λ¨, Nμ νμλΌκ³ κ°μ νμ.
- μ°μ νκ· : Nκ°μ μλ€μ ν©μ NμΌλ‘ λλ κ°
- μ€μκ° : Nκ°μ μλ€μ μ¦κ°νλ μμλ‘ λμ΄νμ κ²½μ° κ·Έ μ€μμ μμΉνλ κ°
- μ΅λΉκ° : Nκ°μ μλ€ μ€ κ°μ₯ λ§μ΄ λνλλ κ°
- λ²μ : Nκ°μ μλ€ μ€ μ΅λκ°κ³Ό μ΅μκ°μ μ°¨μ΄
- Nκ°μ μκ° μ£Όμ΄μ‘μ λ, λ€ κ°μ§ κΈ°λ³Έ ν΅κ³κ°μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
- 첫째 μ€μ μμ κ°μ N(1 ≤ N ≤ 500,000)μ΄ μ£Όμ΄μ§λ€. λ¨, Nμ νμμ΄λ€.
- κ·Έ λ€μ Nκ°μ μ€μλ μ μλ€μ΄ μ£Όμ΄μ§λ€. μ λ ₯λλ μ μμ μ λκ°μ 4,000μ λμ§ μλλ€.
- 첫째 μ€μλ μ°μ νκ· μ μΆλ ₯νλ€. μμμ μ΄ν 첫째 μ리μμ λ°μ¬λ¦Όν κ°μ μΆλ ₯νλ€.
- λμ§Έ μ€μλ μ€μκ°μ μΆλ ₯νλ€.
- μ μ§Έ μ€μλ μ΅λΉκ°μ μΆλ ₯νλ€. μ¬λ¬ κ° μμ λμλ μ΅λΉκ° μ€ λ λ²μ§Έλ‘ μμ κ°μ μΆλ ₯νλ€.
- λ·μ§Έ μ€μλ λ²μλ₯Ό μΆλ ₯νλ€.
μμ΄λμ΄
- μ λκ° 4000μ΄ λ²μλΌκ³ νμΌλ―λ‘ λ°°μ΄μ 8001ν¬κΈ°λ‘ λ§λ€μ΄μ μ λ ₯λ°λ μ«μμ 4000μ λν μμΉμ +1μ νλ€.
- μ λ ₯λ°μΌλ©΄μ μ΅μκ°κ³Ό μ΅λκ°μ κ°±μ ν΄μ€¬κ³ , μ°μ νκ· μ ꡬνκΈ° μν μ΄ν©λ κ³μ°νλ€.
- μ λ ₯μ λ€ λ°μ ν, λ°°μ΄ ν¬κΈ°λ§νΌ λ°λ³΅λ¬Έμ λ리면μ ν΄λΉ λ°°μ΄μ κ°μ΄ 1μ΄μμ΄λ©΄ μΉ΄μ΄νΈ λ³μμ +1μ ν΄μ£Όκ³ ν΄λΉ μΉ΄μ΄νΈκ° (μ 체 μ λ ₯λ°μ κ°μ / 2) + 1μΈμ§ νμΈνλ©° μ€μκ°μ μ°Ύμλ€.
- κ·Έλ¦¬κ³ λ°°μ΄ κ°μ λ°λΌ ν΄λΉ λ°°μ΄κ°μ΄ μ΅λΉκ°μ΄ λ μ μλ μλ³΄λ€ λ ν¬λ€λ©΄ ν΄λΉ λ°°μ΄ μμΉμ ν΄λΉνλ μ«μκ° μ΅λΉ κ°μ΄λ―λ‘ μ΅λΉκ°μ κ°±μ ν΄μ€¬λ€.
- λ§μ½ μ΅λΉκ°μ΄ μ¬λ¬κ°μΌ κ²½μ°, λλ²μ§Έλ‘ μμ μλ₯Ό μΆλ ₯ν΄μΌλλ―λ‘ boolean λ³μλ₯Ό ν΅ν΄ λ§μ½ μ΅λΉκ°μ κ°μμ ν΄λΉ λ³μμ κ°μκ° λκ°κ³ boolean λ³μκ° falseμ΄λ©΄ λλ²μ§Έ μμ μ΅λΉκ°μ΄λ―λ‘ μ΅λΉκ°μ κ°±μ ν΄μ£Όκ³ booleanκ°μ trueλ‘ λ³νν΄μ€λ€.
κ²ͺμ μνμ°©μ€
- λ§μ μνμ°©μ€λ₯Ό κ²ͺμλ€... μ°μ λ§μ΄λ νλ Έλ€... λΆλͺ μμ λ λ€ λ§κ³ λ€λ₯Έ λ°λ‘λ€λ λ€ λ§λλ° μκΎΈ νλ Έλ€κ³ λμλ€...
- λ°λ‘λ₯Ό μ°Ύκ³ λ μ°Ύμ κ²°κ³Ό μ΅λΉκ°μ κ³μ°νλ κ³Όμ μμ λ¬Έμ κ° μμμ΄ λλ¬λ¬λ€...
- μ΅λΉκ°μ΄ μ¬λ¬κ°μΌλ, λλ²μ§Έλ‘ μμ μ΅λΉκ°μ ꡬνκΈ° μν΄ boolean λ³μλ₯Ό μ¬μ©νλλ°, λ§μ½ μ΅λΉκ°μ΄ κ°±μ λλ€λ©΄(μ΅λΉκ°μ΄ μ¬λ¬κ°κ° λλ κ²½μ° X, κ°μκ° λ λ§μμ μλ‘κ² κ°±μ λ λ) boolean λ³μλ λ€μ falseλ‘ μ΄κΈ°νν΄μ€μΌλλλ° κ·Έ μ΄κΈ°νλ₯Ό ν΄μ£Όμ§ μμμ νλ Έμλ€....(λΆλ°νμ...)
μ½λ
import java.io.*;
import java.util.*;
public class BOJ2108 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// μ
λ ₯λ°λ μ«μμ κ°μ
int N = Integer.parseInt(br.readLine());
// νκ· κ³μ°ν λ³μ
double avg = 0;
// μ΅λκ°, μ΅μκ° κ³μ°μ μν λ³μ
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
// μ€μκ°μ μ°Ύμ λ μ°λ λ³μ
int mid = 0;
// μ΅λΉκ°μ μ°Ύμ λ μ°λ λ³μ
int value = 0;
// μ΅λΉκ°μ μ°ΎκΈ° μν λ°°μ΄
int arr[] = new int[8001];
// μ°μ νκ· κ²°κ³Όκ°
int result1 = 0;
// μ€μκ° κ²°κ³Όκ°
int result2 = 0;
// μ΅λΉκ° κ²°κ³Όκ°
int result3 = 0;
// λ²μ κ²°κ³Όκ°
int result4 = 0;
for(int i = 0; i < N; i++){
int n = Integer.parseInt(br.readLine());
// νκ· κ°μ κ³μ°νκΈ° μν΄ λν΄μ€
avg = avg + n;
// λ°°μ΄μ ν΄λΉ κ° μμΉμ + 1
// μ λκ° 4000μ΄λΌκ³ νμΌλ―λ‘ λ§μ΄λμ€λ μ¬ μ μμΌλ +4000μ ν΄μ€
arr[n + 4000] = arr[n + 4000] + 1;
// μ
λ ₯λ€μ΄μ€λ κ°μ΄ νμ¬ μ΅μκ°λ³΄λ€ μλ€λ©΄ κ°±μ
if(min > n){
min = n;
}
// μ
λ ₯λ€μ΄μ€λ κ°μ΄ νμ¬ μ΅λκ°λ³΄λ€ ν¬λ€λ©΄ κ°±μ
if(max < n){
max = n;
}
}
// λͺκ°μ§ΈμΈμ§ μΈκΈ°μν λ³μ
int cnt = 0;
// μ΅λΉκ°μ΄ κ°μ κ²½μ°, μ μΌ μμ μμΈμ§ νλ³νκΈ° μν΄μ
boolean TF = false;
// μ€μκ°κ³Ό μ΅λΉκ°μ μ°ΎκΈ° μν λ°λ³΅λ¬Έ
for(int i = 0; i < 8001; i++){
// λ§μ½ 1λ³΄λ€ ν¬λ€λ©΄ μ
λ ₯μ΄ λμλ€λ μλ―Έλ―λ‘
// μ
λ ₯λ νμλ§νΌ μΉ΄μ΄νΈ
if(arr[i] >= 1){
// μ
λ ₯λ νμλ§νΌ λ°λ³΅λ¬Έμ λλ©΄μ
for(int j = 0; j < arr[i]; j++){
// 1μ© μΉ΄μ΄νΈμ λν΄μ£Όκ³
cnt = cnt + 1;
// λ§μ½ μΉ΄μ΄νΈκ° μ 체 κ°μλ₯Ό 2λ‘ λλκ²μμ 1μ λν κ°κ³Ό
// κ°λ€λ©΄ μ€μκ°μ΄λ―λ‘ μ€μκ° κ°±μ
// μ²μ μ μ₯ν λ λ§μ΄λμ€λ₯Ό κ³ λ €ν΄μ + 4000μ ν΄μ€¬μΌλ―λ‘ -4000μ ν΄μ€
if(cnt == ((N / 2) + 1)){
mid = i - 4000;
}
}
// λ§μ½ κΈ°μ‘΄ μ΅λΉκ°μ κ°μλ³΄λ€ λ κ°μκ° ν¬λ€λ©΄
if(value < arr[i]){
// μ΅λΉκ°μ κ°μλ₯Ό κ°±μ νκ³
value = arr[i];
// ν΄λΉνλ μ΅λΉκ°μ κ²°κ³Όκ°μ μ μ₯
result3 = i - 4000;
// μ΅λΉκ°μ΄ κ°±μ λμΌλ―λ‘
// TFλ₯Ό λ€μ μ΄κΈ°ν
// μ΅λΉκ°μ΄ λ μ μλ κ°μλ₯Ό κ°μ§ μ μ€ λ€μ κ°μ₯ μμ μκ° λμΌλ―λ‘
TF = false;
}
// λ§μ½ κΈ°μ‘΄ μ΅λΉκ°μ κ°μμ κ°μκ° κ°λ€λ©΄
else if(value == arr[i]){
// μ¬λ¬κ°μ μ΅λΉκ°λ€ μ€ μ΅μκ°μΈμ§ νλ¨ν΄μΌν¨
// λ§μ½ λ³μκ° falseλΌλ©΄ μμ§ μ²«λ²μ§Έ κ°μ΄λΌλ μλ―Έλ―λ‘
// νμ¬ κ°μ΄ λλ²μ§Έλ‘ μμ μκ° λ¨ λ°λΌμ TFλ₯Ό trueλ‘ λ°κΎΈκ³
// μ΅λΉκ° κ°±μ
if(!TF){
// ν΄λΉνλ μ΅λΉκ°μ κ²°κ³Όκ°μ μ μ₯
result3 = i - 4000;
TF = true;
}
}
}
// μ
λ ₯λ νμλ§νΌ λͺ¨λ μ«μλ₯Ό μ°ΎμμΌλ©΄ λ°λ³΅λ¬Έ μ’
λ£
if(cnt == N){
break;
}
}
result1 = (int)Math.round(avg / N);
result2 = mid;
result4 = max - min;
System.out.println(result1);
System.out.println(result2);
System.out.println(result3);
System.out.println(result4);
}
}
'μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] BOJ 1874 μ€ν μμ΄ (14) | 2024.07.23 |
---|---|
[Java] BOJ 1654 λμ μλ₯΄κΈ° (10) | 2024.07.22 |
[Java] BOJ 1966 νλ¦°ν° ν (0) | 2024.07.21 |
[Java] BOJ 1929 μμ ꡬνκΈ° (0) | 2024.07.21 |
[Java] BOJ 18110 solved.ac (2) | 2024.07.21 |