๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 7662 ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ

by ๐ŸŠ๊ทค๐ŸŠ 2024. 9. 7.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/7662

  • ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ(dual priority queue)๋Š” ์ „ํ˜•์ ์ธ ์šฐ์„ ์ˆœ์œ„ ํ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋‹ค.
  • ์ „ํ˜•์ ์ธ ํ์™€์˜ ์ฐจ์ด์ ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์—ฐ์‚ฐ(operation) ๋ช…๋ น์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๋ฐ์ดํ„ฐ ๋˜๋Š” ๊ฐ€์žฅ ๋‚ฎ์€ ๋ฐ์ดํ„ฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ์ ์ด๋‹ค.
  • ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์œ„ํ•ด์„  ๋‘ ๊ฐ€์ง€ ์—ฐ์‚ฐ์ด ์‚ฌ์šฉ๋˜๋Š”๋ฐ, ํ•˜๋‚˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์—ฐ์‚ฐ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ์€ ๋˜ ๋‘ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋˜๋Š”๋ฐ ํ•˜๋‚˜๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฒƒ์„ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฒƒ์„ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.
  • ์ •์ˆ˜๋งŒ ์ €์žฅํ•˜๋Š” ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ Q๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. Q์— ์ €์žฅ๋œ ๊ฐ ์ •์ˆ˜์˜ ๊ฐ’ ์ž์ฒด๋ฅผ ์šฐ์„ ์ˆœ์œ„๋ผ๊ณ  ๊ฐ„์ฃผํ•˜์ž.
  • Q์— ์ ์šฉ๋  ์ผ๋ จ์˜ ์—ฐ์‚ฐ์ด ์ฃผ์–ด์งˆ ๋•Œ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ ์ตœ์ข…์ ์œผ๋กœ Q์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์ค‘ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.
  • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ํ‘œ์ค€์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ์€ T๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • ์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  • ๊ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ์ฒซ์งธ ์ค„์—๋Š” Q์— ์ ์šฉํ•  ์—ฐ์‚ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ k (k ≤ 1,000,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  • ์ด์–ด์ง€๋Š” k ์ค„ ๊ฐ๊ฐ์—” ์—ฐ์‚ฐ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž(‘D’ ๋˜๋Š” ‘I’)์™€ ์ •์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค.
  • ‘I n’์€ ์ •์ˆ˜ n์„ Q์— ์‚ฝ์ž…ํ•˜๋Š” ์—ฐ์‚ฐ์„ ์˜๋ฏธํ•œ๋‹ค. ๋™์ผํ•œ ์ •์ˆ˜๊ฐ€ ์‚ฝ์ž…๋  ์ˆ˜ ์žˆ์Œ์„ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.
  • ‘D 1’๋Š” Q์—์„œ ์ตœ๋Œ“๊ฐ’์„ ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ์„ ์˜๋ฏธํ•˜๋ฉฐ, ‘D -1’๋Š” Q ์—์„œ ์ตœ์†Ÿ๊ฐ’์„ ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์ตœ๋Œ“๊ฐ’(์ตœ์†Ÿ๊ฐ’)์„ ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ์—์„œ ์ตœ๋Œ“๊ฐ’(์ตœ์†Ÿ๊ฐ’)์ด ๋‘˜ ์ด์ƒ์ธ ๊ฒฝ์šฐ, ํ•˜๋‚˜๋งŒ ์‚ญ์ œ๋จ์„ ์œ ๋…ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.
  • ๋งŒ์•ฝ Q๊ฐ€ ๋น„์–ด์žˆ๋Š”๋ฐ ์ ์šฉํ•  ์—ฐ์‚ฐ์ด ‘D’๋ผ๋ฉด ์ด ์—ฐ์‚ฐ์€ ๋ฌด์‹œํ•ด๋„ ์ข‹๋‹ค. Q์— ์ €์žฅ๋  ๋ชจ๋“  ์ •์ˆ˜๋Š” -231 ์ด์ƒ 231 ๋ฏธ๋งŒ์ธ ์ •์ˆ˜์ด๋‹ค.
  • ์ถœ๋ ฅ์€ ํ‘œ์ค€์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด, ๋ชจ๋“  ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ Q์— ๋‚จ์•„ ์žˆ๋Š” ๊ฐ’ ์ค‘ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ผ.
  • ๋‘ ๊ฐ’์€ ํ•œ ์ค„์— ์ถœ๋ ฅํ•˜๋˜ ํ•˜๋‚˜์˜ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋ผ. ๋งŒ์•ฝ Q๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ‘EMPTY’๋ฅผ ์ถœ๋ ฅํ•˜๋ผ.

์•„์ด๋””์–ด

  • PriorityQueue๋ฅผ 2๊ฐœ ์„ ์–ธํ•ด์„œ ํ•˜๋‚˜๋Š” ์ตœ์†Ÿ๊ฐ’ ์šฐ์„  Queue, ํ•˜๋‚˜๋Š” ์ตœ๋Œ“๊ฐ’ ์šฐ์„  Queue๋กœ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  HashMap๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ๋“ค์–ด์˜ค๋Š” ๊ฐ’๊ณผ ๊ทธ ๊ฐ’์ด ๋ช‡๋ฒˆ ๋“ค์–ด์˜ค๋Š”์ง€๋ฅผ key๊ฐ’๊ณผ value๊ฐ’์œผ๋กœ ์ €์žฅํ•˜์˜€๋‹ค.
  • ์šฐ์„  I๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๊ทธ ๋’ค์˜ ์ˆซ์ž๋ฅผ Queue์™€ map์— ์ €์žฅํ•ด์ค€๋‹ค.
  • D๊ฐ€ ๋“ค์–ด์˜ค๊ณ  ๊ทธ ๋’ค๊ฐ€ -1์ด๋ฉด ์ตœ์†Ÿ๊ฐ’ ์šฐ์„  Queue์—์„œ ๊ผญ๋Œ€๊ธฐ๊ฐ’์„ ๋นผ๊ณ  HashMap์— ์žˆ๋˜ ๊ทธ ๊ฐ’์˜(๊ผญ๋Œ€๊ธฐ๊ฐ’) value๊ฐ’์„ ๊ธฐ์กด๊ฐ’์—์„œ -1ํ•œ ๊ฐ’์œผ๋กœ ๊ฐฑ์‹ ์‹œํ‚จ๋‹ค.
  • ๋งŒ์•ฝ 1์ด ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ์—๋Š” ์ตœ๋Œ“๊ฐ’ ์šฐ์„  Queue์—์„œ ๊ผญ๋Œ€๊ธฐ๊ฐ’์„ ๋นผ๊ณ  HashMap์— ์žˆ๋˜ ๊ทธ ๊ฐ’์˜(๊ผญ๋Œ€๊ธฐ ๊ฐ’) value๊ฐ’์„ ๊ธฐ์กด๊ฐ’์—์„œ -1ํ•œ ๊ฐ’์œผ๋กœ ๊ฐฑ์‹ ์‹œํ‚จ๋‹ค.
  • ์—ฌ๊ธฐ์„œ ๊ผญ๋Œ€๊ธฐ๊ฐ’์„ ๋นผ๊ธฐ์ „์— Queue๋ฅผ ์ตœ์ ํ™”ํ•ด์ค˜์•ผ๋˜๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋งŒ์•ฝ ์ „ ๊ณ„์‚ฐ์—์„œ ์ตœ๋Œ“๊ฐ’ ์šฐ์„  Queue์˜ ๊ผญ๋Œ€๊ธฐ ๊ฐ’์„ ๋บ์„ ๋•Œ ์ตœ์†Ÿ๊ฐ’ ์šฐ์„  Queue์˜ ๊ผญ๋Œ€๊ธฐ์— ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (์ด ๋ง์€ ์ตœ์†Ÿ๊ฐ’ ์šฐ์„  Queue์™€ ์ตœ๋Œ“๊ฐ’ ์šฐ์„  Queue๊ฐ€ ๊ฐ™์•„์•ผ ๋œ๋‹ค๋Š” ๋œป์ด ์•„๋‹˜ => ๋ฌธ์ œ์—์„œ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’๋งŒ ๊ตฌํ•˜๋ผ๊ณ  ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ Queue์˜ ๊ผญ๋Œ€๊ธฐ๊ฐ’๋งŒ ์ตœ์ ํ™”ํ•ด์ฃผ๋ฉฐ ๊ด€๋ฆฌํ•˜๋ฉด ๋จ)
  • ๋”ฐ๋ผ์„œ ๊ณ„์‚ฐ์„ ์œ„ํ•œ ๊ผญ๋Œ€๊ธฐ ๊ฐ’์„ ๋นผ๊ธฐ ์ „, ๊ฐ Queue์˜ ๊ผญ๋Œ€๊ธฐ๊ฐ’ ์ตœ์ ํ™”๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค. 
  • ์ตœ์ ํ™”๋ฅผ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, PriorityQueue์™€ Hashmap์„ ์ธ์ž๋กœ ๋ฐ›๊ณ  while๋ฌธ์—์„œ Queue๊ฐ€ ๋น„๊ฑฐ๋‚˜ HashMap์—์„œ ํ•ด๋‹น Queue์˜ ๊ผญ๋Œ€๊ธฐ๊ฐ’์˜ value๊ฐ€ 0์ด ์•„๋‹ˆ๊ฒŒ ๋ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์ฃผ๋ฉด ๋˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. (value๊ฐ€ 0์ด๋ผ๋ฉด ์ด๋ฏธ ํ•ด๋‹น ์ˆ˜๋Š” ์—†์–ด์กŒ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ Queue์—์„œ ์ œ๊ฑฐ๋ผ์•ผํ•˜๋Š” ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)
  • ๋ชจ๋“  ์ž…๋ ฅ์ด ๋๋‚œ ํ›„, ๊ฐ Queue๋งˆ๋‹ค ์ตœ์ ํ™”๋ฅผ ํ•œ๋ฒˆ์”ฉ ๋”ํ•ด์ฃผ๊ณ  ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.  

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  • ๋ฌธ์ œ๋ฅผ ์ž˜๋ชป์ดํ•ดํ•ด์„œ ํ•œ์ฐธ์ด ๊ฑธ๋ ธ๋˜ ๊ฒƒ ๊ฐ™๋‹ค...
  • Priority Queue๋ฅผ ์“ฐ๋Š”๋ฐ ์ตœ์†Ÿ๊ฐ’ ์šฐ์„  Queue์™€ ์ตœ๋Œ“๊ฐ’ ์šฐ์„  Queue๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐ™๊ฒŒ ๋งŒ๋“ค์ง€์— ๋„ˆ๋ฌด ๋งค๋ชฐ๋˜์–ด ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค... 
  • ๊ฐ์ž ๊ผญ๋Œ€๊ธฐ์— ์œ„์น˜ํ•œ ์ˆซ์ž๊ฐ€ ๋‹ค๋ฅธ๋ฐ ๋ฐ˜๋Œ€ํŽธ์—์„œ ์–ด๋–ป๊ฒŒ ์ˆซ์ž๋ฅผ ๊บผ๋‚ด์ง€ ์ด๋Ÿฐ์ƒ๊ฐ์„ ํ•˜๋Š๋ผ ์‹œ๊ฐ„ ๋‚ญ๋น„๋ฅผ ํ–ˆ๋‹ค..ใ…œใ…œ
  • ์‚ฌ์‹ค ์ฒ˜์Œ์—๋Š” PriorityQueue ๋‘๊ฐœ๋ฅผ ์•ˆ์“ฐ๊ณ  ํ’€๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๊ทธ๊ฑด ์•ˆ๋๊ณ ... Priority Queue๋ฅผ ๋‘๊ฐœ์“ฐ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฒ˜์Œ์— ์ œ์ถœํ–ˆ๋‹ค๊ฐ€ ์‹œ๊ฐ„์ดˆ๊ณผ๋‚˜์„œ ์œ„ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€๊ฒŒ ๋˜์—ˆ๋‹ค... (remove ํ•จ์ˆ˜๊ฐ€ ์‹œ๊ฐ„์„ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ด ์žก์•„๋จน๋Š”์ค„ ๋ชฐ๋ž๋‹ค..ใ…œใ…œ)

ํ™•์‹คํžˆ ๊ณจ๋“œ๊ฐ€๋‹ˆ๊นŒ... ๋ฌธ์ œ๊ฐ€ ์–ด๋ ต๋‹ค... ใ…œใ…œ (๋” ์ •์ง„ํ•˜์ž...!)

์ฝ”๋“œ

import java.io.*;
import java.util.*;

public class BOJ7662 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int T = Integer.parseInt(br.readLine());

        for(int testCase = 0; testCase < T; testCase++){
            int N = Integer.parseInt(br.readLine());

            // ์ตœ์†Ÿ๊ฐ’์„ ์šฐ์„ ์œผ๋กœ ์šฐ์„  ์ˆœ์œ„ ์ €์žฅ
            PriorityQueue<Integer> minQ = new PriorityQueue<>();
            // ์ตœ๋Œ“๊ฐ’์„ ์šฐ์„ ์œผ๋กœ ์šฐ์„  ์ˆœ์œ„ ์ €์žฅ
            PriorityQueue<Integer> maxQ = new PriorityQueue<>(Comparator.reverseOrder());
            // ์‚ญ์ œ๊ฐ’์„ ์ €์žฅํ•  Hashmap
            HashMap<Integer, Integer> cnt = new HashMap<>();

            for(int i = 0; i < N; i++){
                StringTokenizer st = new StringTokenizer(br.readLine());

                // ์—ฐ์‚ฐ ์ข…๋ฅ˜
                char cal = st.nextToken().charAt(0);
                // ์ˆซ์ž
                int n = Integer.parseInt(st.nextToken());

                // ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์•ผ ๋  ๋•Œ๋ฉด
                if(cal == 'I'){
                    // ์ˆซ์ž๋ฅผ Priority Queue์— ๊ฐ๊ฐ ์ €์žฅ
                    minQ.offer(n);
                    maxQ.offer(n);
                    // ์ˆซ์ž๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅ
                    cnt.put(n, cnt.getOrDefault(n, 0) + 1);
                }
                // ์ˆซ์ž๋ฅผ ๋นผ์•ผ ๋  ๋•Œ
                else if(cal == 'D'){
                    // ์ˆซ์ž๊ฐ€ -1์ด๋ผ๋ฉด ์ตœ์†Ÿ๊ฐ’์„ ๋นผ์•ผ๋จ
                    if(n == -1){
                        // ์ตœ์†Ÿ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ธฐ ์ „ ์ตœ์ ํ™”๋ฅผ ํ•œ๋ฒˆ ํ•ด์คŒ
                        remove(minQ, cnt);

                        // Queue๊ฐ€ ๋นˆ ๊ฐ’์ด ์•„๋‹ ๋•Œ
                        if(!minQ.isEmpty()){

                            int num = minQ.peek();

                            // ์ตœ์†Ÿ๊ฐ’ Queue์—์„œ ์ œ์ผ ์œ„์— ์žˆ๋Š” ๊ฐ’์„ ์ œ๊ฑฐ ํ›„,
                            minQ.poll();
                            // ํ•ด๋‹น ๊ฐ’๊ณผ ํ•ด๋‹น ๊ฐ’์˜ value์— 1์„ ๋บ€ ๊ฐ’์„
                            // Hashmap์— ์žฌ์ €์žฅ
                            cnt.put(num, cnt.get(num) - 1);
                        }
                    }
                    // ์ˆซ์ž๊ฐ€ 1์ด๋ผ๋ฉด ์ตœ๋Œ“๊ฐ’์„ ๋นผ์•ผ๋˜๋ฏ€๋กœ
                    else if(n == 1) {
                        // ์ตœ๋Œ“๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ธฐ ์ „ ์ตœ์ ํ™”๋ฅผ ํ•œ๋ฒˆ ํ•ด์คŒ
                        remove(maxQ, cnt);

                        // Queue๊ฐ€ ๋นˆ ๊ฐ’์ด ์•„๋‹ ๋•Œ
                        if(!maxQ.isEmpty()){

                            int num = maxQ.peek();

                            // ์ตœ๋Œ“๊ฐ’ Queue์—์„œ ์ œ์ผ ์œ„์— ์žˆ๋Š” ๊ฐ’์„ ์ œ๊ฑฐ ํ›„,
                            maxQ.poll();
                            // ํ•ด๋‹น ๊ฐ’๊ณผ ํ•ด๋‹น ๊ฐ’์˜ value์— 1์„ ๋บ€ ๊ฐ’์„
                            // Hashmap์— ์žฌ์ €์žฅ
                            cnt.put(num, cnt.get(num) - 1);
                        }
                    }
                }
            }

            // ์ตœ์ข…์ ์œผ๋กœ ์ถœ๋ ฅํ•˜๊ธฐ ์ „, ๊ฐ Queue ์ตœ์ ํ™”๋ฅผ ํ•ด์คŒ
            remove(minQ, cnt);
            remove(maxQ, cnt);

            // ๋งŒ์•ฝ ๋ชจ๋“  ๊ณ„์‚ฐ์ด ๋๋‚ฌ์„ ๋•Œ Deque๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด
            if(minQ.isEmpty()){
                sb.append("EMPTY" + "\n");
            }
            // ๋น„์–ด์žˆ์ง€์•Š๋‹ค๋ฉด ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅ
            else{
                sb.append(maxQ.peek() + " " + minQ.peek() + "\n");
            }
        }

        System.out.println(sb);
    }

    // ์ˆซ์ž๊ฐ€ ์‚ญ์ œ๋œ๊ฒŒ ๋‹ค๋ฅธ Queue์— ๋‚จ์•„์žˆ์œผ๋ฉด ์ œ๊ฑฐํ•  ํ•จ์ˆ˜
    public static void remove(PriorityQueue<Integer> queue, HashMap<Integer, Integer> count){
        // Queue๊ฐ€ ๋นŒ๋•Œ๊นŒ์ง€ ๊ทธ๋ฆฌ๊ณ 
        // Queue์˜ ๊ผญ๋Œ€๊ธฐ์— ์žˆ๋Š” ๊ฐ’์— ๋Œ€ํ•œ value๊ฐ€ 0์ด ์•„๋‹ˆ๊ธฐ ์ „๊นŒ์ง€ ๋ฐ˜๋ณต
        // ์˜ˆ๋ฅผ ๋“ค์–ด,
        // maxQ์—์„œ ์ œ๊ฑฐํ•œ ๊ฐ’์ด minQ์—์„œ ์ œ๊ฑฐ๊ฐ€ ์•ˆ๋์„ ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ
        // minQ์—์„œ ๊ผญ๋Œ€๊ธฐ๊ฐ’์— ๋Œ€ํ•œ value๊ฐ’์„ HashMap์—์„œ ํ™•์ธํ–ˆ์„ ๋•Œ
        // 0์ผ ๊ฒฝ์šฐ, maxQ์—์„œ ์ด๋ฏธ ์—†์•ด๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ minQ์—์„œ ๊ผญ๋Œ€๊ธฐ๊ฐ’์„ ์ œ๊ฑฐ
        // ์–ด์ฐจํ”ผ ์ œ์ผ ํฐ ๊ฐ’๊ณผ ์ œ์ผ ์ž‘์€ ๊ฐ’๋งŒ ์ถœ๋ ฅํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์—
        // minQ์™€ maxQ์˜ ๊ผญ๋Œ€๊ธฐ๊ฐ’๋งŒ ์ตœ์ ํ™”๋ฅผ ์œ ์ง€ํ•˜๋ฉด ๋จ
        while (!queue.isEmpty() && count.get(queue.peek()) == 0) {
            queue.poll();
        }
    }
}