b1655. κ°€μš΄λ°λ₯Ό λ§ν•΄μš”

2025. 5. 19. 14:22Β·Algorithm & Data Structures/BOJ

 

https://www.acmicpc.net/problem/1655

 

 

 

🎀 μžλ°”λ‘œ ν‘ΈλŠ” κ°€μš΄λ°λ₯Ό λ§ν•΄μš” 문제 풀이

 


 

πŸ“Œ 문제 κ°œμš”

 

  • μˆ«μžκ°€ ν•˜λ‚˜μ”© μ£Όμ–΄μ§ˆ λ•Œλ§ˆλ‹€, μ§€κΈˆκΉŒμ§€ μž…λ ₯된 μˆ˜λ“€ 쀑 κ°€μš΄λ° 수λ₯Ό 좜λ ₯ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€.
  • 단, μž…λ ₯은 μ‹€μ‹œκ°„μœΌλ‘œ μ£Όμ–΄μ§€λ©°, λͺ¨λ“  μˆ˜λŠ” μ •μˆ˜μž…λ‹ˆλ‹€.

 


 

πŸ’‘ 예제 μž…λ ₯

7
1
5
2
10
-99
7
5

 

예제 좜λ ₯

1  
1  
2  
2  
2  
2  
5

 


 

πŸ›  μ•Œκ³ λ¦¬μ¦˜ μ ‘κ·Ό 방식

 

이 λ¬Έμ œλŠ” 쀑간값(Median)을 μ‹€μ‹œκ°„μœΌλ‘œ κ΄€λ¦¬ν•˜λŠ” 것이 ν•΅μ‹¬μž…λ‹ˆλ‹€.

 

 

βœ… 핡심 아이디어: 두 개의 νž™(PriorityQueue)

 

  • μ΅œλŒ€ νž™ (μ™Όμͺ½): 쀑간값보닀 μž‘μ€ μˆ˜λ“€μ„ μ €μž₯
  • μ΅œμ†Œ νž™ (였λ₯Έμͺ½): 쀑간값보닀 큰 μˆ˜λ“€μ„ μ €μž₯
  • 쀑간값은 항상 μ΅œλŒ€ νž™μ˜ top에 μœ„μΉ˜ν•˜λ„λ‘ 관리

 

νž™μ˜ 크기λ₯Ό μ‘°μ •ν•˜λ©΄μ„œ 항상 μ΅œλŒ€ νž™ β‰₯ μ΅œμ†Œ νž™ μœ μ§€

 


 

🧾 μ½”λ“œ ν•΄μ„€

PriorityQueue<Integer> pq = new PriorityQueue<>(); // μ΅œμ†Œ νž™ (였λ₯Έμͺ½)
PriorityQueue<Integer> subpq = new PriorityQueue<>(Collections.reverseOrder()); // μ΅œλŒ€ νž™ (μ™Όμͺ½)
int num = Integer.parseInt(br.readLine());
pq.add(num);

// μ‚½μž… 직후, 두 νž™μ΄ μˆœμ„œλ₯Ό μ–΄κΈ°λ©΄ swap
if((!pq.isEmpty() && !subpq.isEmpty()) && pq.peek() < subpq.peek()){
    pq.add(subpq.remove());
    subpq.add(pq.poll());
}
// κ· ν˜• λ§žμΆ”κΈ°
if(pq.size() > subpq.size() + 2)
    subpq.add(pq.poll());
else if(pq.size() == subpq.size())
    pq.add(subpq.poll());
// 항상 κ°€μš΄λ°λŠ” μ΅œμ†Œνž™μ˜ top
sb.append(pq.peek()).append("\n");

 


 

βœ… 핡심 포인트 μš”μ•½


포인트 μ„€λͺ…
쀑간값 μœ μ§€ μ΅œλŒ€ νž™ + μ΅œμ†Œ νž™ μ‚¬μš©
μ‚½μž… 숫자λ₯Ό μ μ ˆν•œ νž™μ— μΆ”κ°€
μ •λ ¬ νž™μ˜ top 비ꡐ ν›„ κ΅ν™˜
κ· ν˜• μœ μ§€ νž™μ˜ 크기λ₯Ό μ‘°μ •ν•˜μ—¬ 쀑간값이 μ™Όμͺ½(μ΅œλŒ€ νž™)에 κ°€κΉκ²Œ μœ μ§€

 


 

🎯 κ²°λ‘ : μ‹€μ‹œκ°„ 쀑간값은 두 νž™μœΌλ‘œ ν•΄κ²°ν•˜μž

 

이 λ¬Έμ œλŠ” λ‹¨μˆœν•œ μ •λ ¬ λ¬Έμ œκ°€ μ•„λ‹Œ, 슀트리밍 λ°μ΄ν„°μ—μ„œμ˜ 쀑간값 관리 λ¬Έμ œμž…λ‹ˆλ‹€.

 

 

 

 

'Algorithm & Data Structures > BOJ' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

b9328. μ—΄μ‡   (0) 2025.05.21
b10942. νŽ λ¦°λ“œλ‘¬?  (0) 2025.05.20
b1774. μš°μ£Όμ‹ κ³Όμ˜ ꡐ감  (0) 2025.05.14
b4386. λ³„μžλ¦¬ λ§Œλ“€κΈ°  (0) 2025.05.13
b20040. μ‚¬μ΄ν΄κ²Œμž„  (0) 2025.05.12
'Algorithm & Data Structures/BOJ' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • b9328. μ—΄μ‡ 
  • b10942. νŽ λ¦°λ“œλ‘¬?
  • b1774. μš°μ£Όμ‹ κ³Όμ˜ ꡐ감
  • b4386. λ³„μžλ¦¬ λ§Œλ“€κΈ°
Geisha
Geisha
개발 일기
  • Geisha
    Geisha
    Geisha
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기 (335)
      • Algorithm & Data Structures (253)
        • BOJ (111)
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (29)
        • SQL (23)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • 운영체제 (13)
        • λ„€νŠΈμ›Œν¬ (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    programmers
    λ°±νŠΈλž˜ν‚Ή
    algorithm
    PriorityQueue
    ν›„μœ„μˆœνšŒ
    baekjoon
    Union-Find
    μžλ°”
    Stack
    Dijkstra
    binarySearch
    κ΅¬ν˜„
    SQL
    BFS
    μ•Œκ³ λ¦¬μ¦˜
    dp
    κ²½λ‘œμ••μΆ•
    μ „μœ„μˆœνšŒ
    μœ λ‹ˆμ˜¨νŒŒμΈλ“œ
    λ‹€μ΅μŠ€νŠΈλΌ
    DynamicProgramming
    μŠ€νƒ
    ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
    Java
    κ³¨λ“œ
    dfs
    λ°±μ€€
    이뢄탐색
    νˆ¬ν¬μΈν„°
    λ™μ κ³„νšλ²•
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Geisha
b1655. κ°€μš΄λ°λ₯Ό λ§ν•΄μš”
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.