🔺 문제
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() == 0) continue;
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
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 1406번: 에디터 (0) | 2023.07.12 |
---|---|
[백준/JAVA] 16917번: 양념 반 후라이드 반 (0) | 2023.07.11 |
[백준/JAVA] 1644번: 소수의 연속합 (0) | 2023.07.10 |
[백준/JAVA] 4179번: 불! (0) | 2023.07.10 |
[백준/JAVA] 19637번: IF문 좀 대신 써줘 (0) | 2023.07.08 |