๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/7662)
< ์ด์ค ์ฐ์ ์์ ํ >
๋ฌธ์ ํ์ด & ์๊ฐ
์ฒ์์๋ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฐ์ ์์ ํ๋ฅผ 2๊ฐ ์ ์ธํด์ ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์ ์์ผ๋ก ์ ๋ ฌํด์ ์ฌ์ฉํ๋ค. ์๊ฐ์ ํ๋ 6์ด๋ผ์ ํต๊ณผํ ์ค ์์์ง๋ง ์๊ฐ์ด๊ณผ์ ๋งํ๋ฒ๋ ธ๋ค.
๋ช ๋ฒ์ด๋ ์๋ํด๋ ํด๊ฒฐํ ์ ์์ด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ๋ค๊ฐ JAVA์ TreeMap์ด ์๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
TreeMap์ ๋ํด ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ์ด๋ค.
https://melody-coding.tistory.com/317
TreeMap์ ์ฌ์ฉํด์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๊ด๋ฆฌํ๋ค. ํ์ง๋ง ๊ณ์ํด์ ํ๋ ธ์ต๋๋ค๊ฐ ์ถ๋ ฅ๋์๋ค.
๊ทธ ์ด์ ๋ ํ ์คํธ ์ผ์ด์ค๊ฐ ์ฌ๋ฌ ๊ฐ ์ผ ๋ ์ด๊ธฐํ๋ฅผ ์ ํด์ค ๊ฒ๊ณผ ์ถ๋ ฅ๋ฌธ์์ ๊ฐํ์ ๋น ํธ๋ ค ๋ฐ์ํ๋ ๊ฒ์ด์๋ค.
์ด ๋ถ๋ถ์ ์์ ํด์ ํต๊ณผํ๋ค.
์๊ฐ ์ด๊ณผ ์ฝ๋ (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
static ArrayList<String> arr;
public static void main(String[] args) throws IOException{
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int t=Integer.parseInt(bf.readLine());
PriorityQueue<Integer> queue=new PriorityQueue<>();
PriorityQueue<Integer> queue2=new PriorityQueue<>(Collections.reverseOrder());
for(int i=0; i<t; i++) {
int k=Integer.parseInt(bf.readLine());
for(int j=0; j<k; j++) {
st=new StringTokenizer(bf.readLine());
char cmd=st.nextToken().charAt(0);
int num=Integer.parseInt(st.nextToken());
if(cmd=='I') {
queue.add(num);
queue2.add(num);
}else if(cmd=='D' && queue.size()>0) {
if(num==1) {
int temp=queue2.poll();
queue.remove(temp);
}else {
int temp=queue.poll();
queue2.remove(temp);
}
}
}
if(queue.size()==0) {
bw.write("EMPTY\n");
}else {
bw.write(queue2.peek()+" "+queue.peek());
}
}
bw.flush();
}
}
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.TreeMap;
public class _7662_ { // ์ด์ค ์ฐ์ ์์ ํ
static ArrayList<String> arr;
public static void main(String[] args) throws IOException{
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int t=Integer.parseInt(bf.readLine());
for(int i=0; i<t; i++) {
TreeMap<Integer, Integer> map=new TreeMap<>();
int k=Integer.parseInt(bf.readLine());
for(int j=0; j<k; j++) {
st=new StringTokenizer(bf.readLine());
char cmd=st.nextToken().charAt(0);
int num=Integer.parseInt(st.nextToken());
if(cmd=='I') {
if(map.containsKey(num)) {
map.put(num, map.get(num)+1);
}else {
map.put(num, 1);
}
}else if(cmd=='D' && map.size()>0) {
if(num==1) {
if(map.lastEntry().getValue()==1) {
map.remove(map.lastKey());
}else {
map.put(map.lastKey(), map.lastEntry().getValue()-1);
}
}else {
if(map.firstEntry().getValue()==1) {
map.remove(map.firstKey());
}else {
map.put(map.firstKey(), map.firstEntry().getValue()-1);
}
}
}
}
if(map.size()==0) {
bw.write("EMPTY\n");
}else {
bw.write(map.lastKey()+" "+map.firstKey()+"\n");
}
}
bw.flush();
}
}
Main
- ํ ์คํธ ์ผ์ด์ค(t) ์ ๋ ฅ
- map : ์ ์๋ฅผ ๊ด๋ฆฌํ๋ TreeMap <์ ์, ์ ์ ๊ฐ์>
- ์ฐ์ฐ์ ๊ฐ์(k) ์ ๋ ฅ
- ์ฐ์ฐ์ ๊ฐ์๋งํผ ์ฐ์ฐ ๋ํ๋ด๋ ๋ฌธ์(cmd)์ ์ ์(num) ์ ๋ ฅ -> ๋ฌธ์๊ฐ I์ด๋ฉด ์ฝ์ ์ด๋ฏ๋ก map์ ์ถ๊ฐ (๊ฐ์ ๊ฐ์ด ์กด์ฌํ ์ ์์ผ๋ฏ๋ก ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋์ด ํ๋จ) / ๋ฌธ์๊ฐ D์ด๋ฉด ์ญ์ ์ด๋ฏ๋ก map์ด ๋น์ด์์ง ์๋ค๋ฉด ์ญ์ (๊ฐ์ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ ์ผ ๋์ ํ๋์ผ ๋๋ฅผ ๋๋์ด ํ๋จ)
- map์ด ๋น์ด์๋ค๋ฉด "EMPTY" ์ถ๋ ฅ / ๋น์ด์์ง ์๋ค๋ฉด ์ต๋๊ฐ๊ณผ ์ต์๊ฐ ์ถ๋ ฅ
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1043_๊ฑฐ์ง๋ง (0) | 2023.06.26 |
---|---|
[Baekjoon] 12893_์ ์ ์ (0) | 2023.06.26 |
[Baekjoon] 19538_๋ฃจ๋จธ (0) | 2023.06.15 |
[Baekjoon] 13265_์์น ํ๊ธฐ (0) | 2023.06.13 |
[Baekjoon] 11060_์ ํ ์ ํ (0) | 2023.06.12 |