백준 11286번 절댓값 힙

- 힙을 구현하되, 절댓값을 기준으로 오름차순 정렬, 절댓값이 동일하다면 실젯 값을 비교하는 과정
package Silver_1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;
public class Av_Heap {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if(Math.abs(o1) == Math.abs(o2)) return o1-o2;
else return Math.abs(o1) - Math.abs(o2);
}
});
for(int i = 0; i<N; i++){
int x = Integer.parseInt(br.readLine());
if(x == 0){
if(queue.isEmpty()) sb.append(0+"\n");
else sb.append(queue.poll()).append("\n");
}
else{
queue.add(x);
}
}
System.out.println(sb);
}
}
- Math.abs()메서드를 사용하여 절댓값 비교함
- Comparator 사용자 정의 정렬 규칙 생성