Queue : Fist-in-First-Out
Heap : 중복값이 허용되며 최소힙과 최대힙이 있는 완전이진 트리
힙은 우선순위큐를 이용해서 구현될 수 있다.
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
Map<Long,Integer> map = new TreeMap<>();
for(int i=0;i<N;i++){
long x = Integer.parseInt(br.readLine());
if(x>0){
map.put(x,map.getOrDefault(x,0)+1);
}else {
if(map.size()==0) {
bw.write("0\n");
continue;
}
Set<Long> keyset = map.keySet();
Iterator it = keyset.iterator();
long remv = (Long) it.next();
map.put(remv, map.get(remv)-1);
if(map.get(remv)==0) map.remove(remv);
bw.write(Long.toString(remv)+"\n");
}
}
bw.flush();
bw.close();
br.close();
}
}
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
PriorityQueue<Long> heap = new PriorityQueue<>();
for(int i=0;i<N;i++){
long x = Integer.parseInt(br.readLine());
if(x>0){
heap.offer(x);
}else {
if(heap.isEmpty()){
bw.write("0\n");
}else{
bw.write(Long.toString(heap.poll())+"\n");
}
}
}
bw.flush();
bw.close();
br.close();
}
}
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> heap = new PriorityQueue<>((x1,x2)-> x2-x1);
for(int i=0;i<N;i++){
int x = Integer.parseInt(br.readLine());
if(x>0){
heap.offer(x);
}else {
if(heap.isEmpty()){
bw.write("0\n");
}else{
bw.write(Long.toString(heap.poll())+"\n");
}
}
}
bw.flush();
bw.close();
br.close();
}
}
위와 같은 방법으로 해도 되긴하지만 추천하진 않는거 같다.