PriorityQueue 를 이용해서 풀었습니다.
입력한 값과 입력한 값의 절댓값을 갖고있는 Heap 이라는 클래스를 생성해 Heap 클래스 객체를 요소로 하는
PriorityQueue 를 생성합니다. PriorityQueue 의 정렬기준은 절댓값 오름차순으로 하고, 절댓값이 같다면
입력한 값을 오름차순으로 정렬하도록 했습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
public class p11286 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuffer sb = new StringBuffer();
int N = Integer.parseInt(br.readLine());
Queue<Heap> q = new PriorityQueue<>(new Comparator<Heap>() {
@Override
public int compare(Heap o1, Heap o2) {
if(o1.abs == o2.abs)
return o1.num - o2.num;
return o1.abs - o2.abs;
}
});
for(int i=0; i<N; i++) {
int num = Integer.parseInt(br.readLine());
if(num ==0) {
if(q.isEmpty())
sb.append(0 + "\n");
else
sb.append(q.poll().num +"\n");
} else {
q.add(new Heap(num, Math.abs(num)));
}
}
System.out.println(sb);
}
static class Heap {
int num;
int abs;
public Heap(int num, int abs) {
this.num = num;
this.abs = abs;
}
}
}
'Baekjoon' 카테고리의 다른 글
[백준] 1934번 - 최소공배수 - Java (0) | 2022.12.15 |
---|---|
[백준] 2577번 - 숫자의 개수 - Java (0) | 2022.12.12 |
[백준] 4153번 - 직각삼각형 - Java (0) | 2022.12.11 |
[백준] 10569번 - 다면체 - Java (0) | 2022.12.11 |
[백준] 11866번 - 요세푸스 문제 0 - Java (0) | 2022.12.11 |
댓글