https://www.acmicpc.net/problem/2696
π μλ°(Java)λ‘ νΈλ μ€μκ° κ΅¬νκΈ° - λ°±μ€ 2696 π’
π λ¬Έμ κ°μ
λ°±μ€ 2696λ² - μ€μκ° κ΅¬νκΈ° λ¬Έμ λ
μ¬λ¬ κ°μ μμ΄μ΄ μ£Όμ΄μ‘μ λ,
κ° μμ΄λ§λ€ νμ λ²μ§Έ μλ₯Ό μ λ ₯λ°μ λλ§λ€μ μ€μκ°μ ꡬνλ λ¬Έμ μ λλ€.
- μ λ ₯ μμ΄μ κ°μ: T
- κ° μμ΄μ μ΅λ 10μ© λμ΄μ Έ μ λ ₯
- νμ λ²μ§Έ μκ° λ€μ΄μ¬ λλ§λ€ μ€μκ° μΆλ ₯
π‘ μμ μ λ ₯
1
9
1 2 3 4 5 6 7 8 9
π‘ μμ μΆλ ₯
5
1 2 3 4 5
π μκ³ λ¦¬μ¦ μ κ·Ό λ°©μ
μ΄ λ¬Έμ λ λνμ μΈ μ€μκ°(Median) μ μ§ λ¬Έμ λ‘,
**μ΅λ ν(μΌμͺ½ μ λ°) + μ΅μ ν(μ€λ₯Έμͺ½ μ λ°)**μ μ¬μ©νμ¬ μ€μκ°μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν©λλ€.
βοΈ ν΅μ¬ μμ΄λμ΄
- left: μ΅λ ν, μ€μκ°λ³΄λ€ μμ κ° μ μ₯
- right: μ΅μ ν, μ€μκ°λ³΄λ€ ν° κ° μ μ₯
- μ§μ κ° → leftμ right κ· ν μ μ§,
- νμ κ° → leftκ° νμ λ λ§λλ‘ μ μ§
- νμ λ²μ§Έ μκ° λ€μ΄μ€λ©΄ left.peek()κ° μ€μκ°
πΉ Java μ½λ ν΄μ€
Queue<Integer> left = new PriorityQueue<>(Collections.reverseOrder()); // max heap
Queue<Integer> right = new PriorityQueue<>(); // min heap
β left: μ€μκ° μ΄ν μ«μ
β right: μ€μκ° μ΄κ³Ό μ«μ
if(left.isEmpty() || left.peek() < num){
left.offer(num);
} else {
right.offer(num);
}
β μ²μμ leftμ λ£κ³ ,
β μ λ ¬μ μ μ§νκΈ° μν΄ λ νμ μ¬μ΄μ¦λ₯Ό λ§μΆ°μ€
if (left.size() > right.size() + 1) {
right.offer(left.poll());
} else if (right.size() > left.size()) {
left.offer(right.poll());
}
β νμ ν¬κΈ°λ₯Ό **left ≥ right**κ° λλλ‘ μ μ§
if(i % 2 == 0){
answer++;
sb.append(left.peek()).append(" ");
}
β νμ λ²μ§Έ μκ° λ€μ΄μμ λλ§λ€ left.peek() μΆλ ₯
β μ΄λ νμ¬ μ λ ₯λ μμ΄μ μ€μκ°
π μ μΆλ ₯ μ²λ¦¬
for(int i = 0; i < N; i += 10){
input.append(br.readLine()).append(" ");
}
β λ°±μ€μμ ν μ€μ μ΅λ 10κ°μ μ«μλ§ μ£Όμ΄μ§λ―λ‘,
β μ¬λ¬ μ€μ λ°μμ νλμ μ€νΈλ§μΌλ‘ μ²λ¦¬
π μ 리
β ν΅μ¬ ν¬μΈνΈ
β μ€μκ° λ¬Έμ λ νμ **“λ κ°μ ν”**μ μκ°
β **μΌμͺ½(μ΅λ ν)**μ μ€μκ° μ΄ν
β **μ€λ₯Έμͺ½(μ΅μ ν)**μ μ€μκ° μ΄κ³Ό
β left.peek()κ° νμ μ€μκ°μ΄ λλλ‘ μ μ§
'Algorithm & Data Structures > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
b1450. λ μλ¬Έμ (1) | 2025.04.10 |
---|---|
b3665. μ΅μ’ μμ (0) | 2025.04.09 |
b.2075 Nλ²μ§Έ ν° μ (0) | 2025.04.04 |
b.3273 λ μμ ν© (0) | 2025.04.01 |
b.11657 νμλ¨Έμ (0) | 2025.03.20 |