접근
절댓값이 작은 순으로, 만약 같다면 원래 값이 작은(즉 음수 먼저) 출력해야 한다. 이를 위해 절댓값과 기존 값을 가지는 클래스를 선언하고, 정렬 조건을 정의하여 우선순위 큐에 담아줬다. 배열이 비어있는 경우는 곧 큐가 비어있는 경우로 예외 처리를 해줬다.
코드
package week10;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class BJ11286 {
static class AbsNum implements Comparable<AbsNum>{
int absVal, val;
public AbsNum(int absVal, int val) {
this.absVal = absVal;
this.val = val;
}
@Override
public int compareTo(AbsNum o) {
if(this.absVal == o.absVal)
return this.val - o.val;
else
return this.absVal - o.absVal;
}
}
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());
PriorityQueue<AbsNum> pq = new PriorityQueue<>();
for (int i = 0; i < n; i++) {
int val = Integer.parseInt(br.readLine());
if(val != 0)
pq.add(new AbsNum(Math.abs(val), val));
else{
if(pq.isEmpty()) sb.append(0);
else sb.append(pq.poll().val);
sb.append("\n");
}
}
System.out.println(sb);
}
}
'Algorithm' 카테고리의 다른 글
[백준] 13904: 과제 JAVA (0) | 2023.03.20 |
---|---|
[백준] 1374: 강의실 JAVA (0) | 2023.03.20 |
[백준] 1713: 후보 추천하기 JAVA (0) | 2023.03.14 |
[백준] 5525: IOIOI JAVA (0) | 2023.03.04 |
[백준] 1541: 잃어버린 괄호 JAVA (0) | 2023.03.03 |