import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(bf.readLine());
PriorityQueue<Integer> q = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int diff = Math.abs(o1) - Math.abs(o2);
if(diff==0) {
diff = o1 - o2;
}
return diff;
}
});
for(int i=0; i<N; i++) {
int tmp = Integer.parseInt(bf.readLine());
if(tmp==0) {
if(q.isEmpty()) {
sb.append(0+"\n");
}else {
sb.append(q.poll()+"\n");
}
}else {
q.add(tmp);
}
}
System.out.println(sb.toString());
}
}
우선순위 큐를 사용하지 않고 ArrayList에 담아 Collections.sort에 절댓값을 비교하는 Comparator를 작성해서 풀려고 하니까 시간초과가 났다.. 정렬 후 큐처럼 poll()을 해서 조회-삭제를 한번에 할 수 있으면 좋겠다고 생각했는데 Collections.sort는 Queue가 안 들어감. 우선순위큐는 생성하는 부분에 comparator를 매개변수로해서 비교 기준을 정해줄 수 있었다..
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 2407 조합 (Java) (0) | 2023.02.22 |
---|---|
BOJ 15686 (0) | 2022.08.12 |
BOJ 9020 (0) | 2022.08.05 |
BOJ 4948 (0) | 2022.08.05 |
BOJ 1929 (0) | 2022.08.05 |