[BOJ] 2012 - λ±μ λ§€κΈ°κΈ°
2025. 7. 16. 21:36γProblem Solving/Online Judge
π¬ λ¬Έμ μ€λͺ
Nλͺ μ νμμ΄ "λλ βλ± νκ³ μΆμ΄μ!"λΌκ³ μμ λ±μλ₯Ό μ μΆνλ€. νμ§λ§ λͺ¨λ νμμ μμμ΄ λ€μ΄λ§μ μλ μλ€.
κ° νμμ μμ λ±μμ μ€μ λ±μ κ°μ μ°¨μ΄μ μ΄ν©μ μ΅μννλλ‘ νμλ€μκ² μ€μ λ±μλ₯Ό λΆμ¬νμ.
π μ£Όμ μ¬ν
- νμ μ N: 1 ≤ `N` ≤ 500,000
- μμ λ±μ: 1 μ΄μ `N` μ΄νμ μ μ
- μΆλ ₯: νμλ€μ μμ λ±μμ μ€μ λ±μμ μ°¨μ΄μ μ΄ν©μ μ΅μκ°
π λ¬Έμ νμ΄
μ΄ λ¬Έμ λ Greedy(νμ μκ³ λ¦¬μ¦)λ‘ ν΄κ²°ν μ μλ€.
ν΅μ¬ μμ΄λμ΄
- μ λ ¬ν μμ λ±μμ 1λ±λΆν° μ°¨λ‘λ‘ λΆμ¬νλ μ€μ λ±μλ₯Ό λ§€μΉν΄μ μ°¨μ΄μ μ΄ν©μ μ΅μνν μ μλ€.
- μλ₯Ό λ€μ΄ μμ λ±μκ° [1, 2, 2, 6]μ΄λΌλ©΄,
μ λ ¬ ν [1, 2, 2, 6]μ [1, 2, 3, 4]λ₯Ό λΉκ΅νλ€.
π» μ½λ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class λ±μλ§€κΈ°κΈ° {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] array = new int[N];
for (int i = 0; i < N; i++) {
array[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(array); // μμ λ±μ μ λ ¬
long result = 0; // μ΄ λΆλ§λλ λ§€μ° ν΄ μ μμΌλ―λ‘ long μ¬μ©
for (int i = 0; i < N; i++) {
result += Math.abs(array[i] - (i + 1)); // μμλ±μ - μ€μ λ±μ
}
System.out.println(result);
}
}
π§ νκ³
β νλ Έμ΅λλ€
β οΈ μ£Όμ μ¬ν: int vs long
- λ¬Έμ μμ Nμ΄ μ΅λ 500,000μ΄λ―λ‘,
μ΅μ μ κ²½μ° (500,000 - 1)^2 = μ½ 2.5 * 10^11κΉμ§ μ΄ν©μ΄ μ»€μ§ μ μλ€. - `int`μ λ²μλ μ½ ±21μ΅ (-2,147,483,648 ~ 2,147,483,647)
- λ°λΌμ `int result = 0`μΌλ‘ μμ±νλ©΄ μ€λ²νλ‘μ° λ°μ κ°λ₯ → νλ¦° λ΅ μΆλ ₯
- λ°λμ `long result = 0`μΌλ‘ μ μΈν΄μΌ νλ€!
μ²μμ μμ λ±μ λ°°μ΄κ³Ό 1 ~ Nμ μ€μ λ±μλ₯Ό λ¨μν λ§μΆ°λ³΄λ©΄ λμ§ μμκΉ νμ§λ§
μ λ ¬μ ν΅ν΄ κ°μ₯ κ°κΉμ΄ λ±μλΌλ¦¬ λ§€μΉνλ κ²μ΄ κ°μ₯ λΆλ§μ μ€μΌ μ μλ λ°©λ²μ΄λΌλ κ±Έ κΉ¨λ¬μλ€.
λν λ¬Έμ μ체λ μ¬μ μ§λ§ intλ‘ ν©κ³λ₯Ό κ³μ°νλ©΄ νλ¦° μ λ΅μ΄ λμ€λ μμΈλ₯Ό λ§λμ
μλ£νμ κΈ°λ³Έ κ°λ
μ μ€μμ±μ λ€μ νλ² λλ μ μμλ€.
β λ°°μ΄ μ
- Greedy μκ³ λ¦¬μ¦μ κΈ°λ³Έ μ λ΅: "μ λ ¬ ν μμ°¨ λ§€μΉ"
- μλ£ν μ νμ μ€μμ± β« μ°μ°μ΄ μ»€μ§ μ μλ λμ ν© λ¬Έμ μμλ `long` κ³ λ €νκΈ°!
- λ¬Έμ μ 쑰건(Nμ λ²μ λ±)μ λ¨μν μ λ³΄κ° μλλΌ μλ£ν κ²°μ μ κ·Όκ±°κ° λ μ μμ
'Problem Solving > Online Judge' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] 24268 - 2022λ 무μμ΄ νΉλ³ν κΉ? (0) | 2025.07.19 |
---|---|
[BOJ] 5972 - νλ°° λ°°μ‘ (1) | 2025.07.18 |
[BOJ] 2866 - λ¬Έμμ΄ μλΌλ΄κΈ° (1) | 2025.07.16 |
[BOJ] 2512 - μμ° (1) | 2025.07.15 |
[BOJ] 30804 - κ³ΌμΌ νν루 (0) | 2025.07.12 |