코테/백준

[백준/JAVA] 7662번: 이중 우선순위 큐

imname1am 2023. 7. 11. 17:50
반응형

🔺 문제

 

7662번: 이중 우선순위 큐

입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적

www.acmicpc.net

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.*;
import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();
 
        int T = Integer.parseInt(br.readLine());
        while(T -- > 0) {
            int k = Integer.parseInt(br.readLine());
            TreeMap<Integer, Integer> tree = new TreeMap<>();
            
            while(k --> 0) {
                st = new StringTokenizer(br.readLine(), " ");
                
                String cmd = st.nextToken();
                int n = Integer.parseInt(st.nextToken());
                
                // 삽입
                if(cmd.equals("I")) {
                    tree.put(n, tree.getOrDefault(n, 0+ 1);
                }
                // 삭제
                else {
                    if(tree.size() == 0continue;
 
                    int num = (n == 1) ? tree.lastKey() : tree.firstKey();                    
                    if(tree.put(num, tree.get(num) - 1== 1)    // 해당 정수의 갯수를 -1하면서 만약 0이 된다면 삭제
                        tree.remove(num);
                }
            }
            
            sb.append(tree.size() == 0 ? "EMPTY" : tree.lastKey() + " " + tree.firstKey()).append("\n");
        }
        
        System.out.println(sb);
    }
}
 
cs
✅ 해결 아이디어
✔ TreeMap

 

< TreeMap 특징 > 

- Red-Black Tree로 구성되어 있음 (이진 트리의 일종)
- Key 값 기준으로 정렬된 상태 유지 (default : 오름차순 !) firstKey(), lastKey() 로 양 끝 값에 편리하게 접근 가능

- 시간 복잡도 : O(log N)

 

🚩 put() :  이전에 저장 되어있던 해당 키값과 같은 키를 저장하면, 저장되어있던 key의 value 값 반환.

                              (이전 값이 존재하지 않으면, null 반환) 

 


🔺 다른 풀이들

- 약간 풀어놓은 설명 굿...

 

[백준 7662번] 이중 우선순위 큐 - java

문제 설명 1. 테스트 케이스가 T번 주어진다. 해당 테스트 케이스들에 우선 순위 큐에 시도학 연산 N번이 주어진다. 2. I는 입력, D는 삭제이고 D에서 -1이면 최소값, 1은 최대값을 삭제한다. D시도

hello-backend.tistory.com

 


💬 느낀 점

처음에 Deque 사용하려다 시간 초과 떠서 틀리구

풀이를 찾아봤더니

TreeMap을 써야한다고...

 

이렇게 하나 또 배우고 갑니다... (꾸벅)

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

✔ 풀이

 

[BOJ] 7662 - 이중 우선순위 큐 JAVA

www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어

codeung.tistory.com

 

[JAVA / 자바] 백준 7662번 - 이중 우선순위 큐 (골드 5)

문제 이중 우선순위 큐(dual priority queue)는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산(operation) 명령에 따라 우

kwin0825.tistory.com

 

 

✔ TreeMap 사용법

 

[Java] 자바 TreeMap 사용법 & 예제 총정리

TreeMap이란? TreeMap은 이진트리를 기반으로 한 Map 컬렉션입니다. 같은 Tree구조로 이루어진 TreeSet과의 차이점은 TreeSet은 그냥 값만 저장한다면 TreeMap은 키와 값이 저장된 Map, Etnry를 저장한다는 점입

coding-factory.tistory.com

 

반응형