최대 힙 문제랑 많이 비슷하다.
최대 힙 문제처럼 우선순위 큐를 사용한다. 하지만 절댓값 기준으로 정렬을 해줘야 하니, Compare를 오버라이드해서 정렬의 기준을 정한다.
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 br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> pq = new PriorityQueue<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
//절대값 기준으로 앞 값이 더 크다면 자리를 바꿔준다.
if(Math.abs(o1) > Math.abs(o2)) {
return Math.abs(o1) - Math.abs(o2);
//절대값 기준으로 두 값이 같다면 음수를 앞으로 보내준다.
}else if(Math.abs(o1) == Math.abs(o2)) {
return o1 - o2;
}else {
return -1;
}
}
});
StringBuilder sb = new StringBuilder();
for(int i = 0; i < N; i++) {
int x = Integer.parseInt(br.readLine());
if(x == 0) {
if(pq.isEmpty()) sb.append("0").append("\n");
else sb.append(pq.poll()).append("\n");
}else {
pq.offer(x);
}
}
System.out.println(sb);
}
}
728x90
'Study > 코딩스터디_TIL' 카테고리의 다른 글
[java 스터디] 문제풀이 28107번 java 백준-회전초밥 (0) | 2025.02.14 |
---|---|
[java 스터디] 문제풀이 Result506. Relative Ranks (0) | 2025.02.11 |
[java 스터디] 우선순위 큐 (0) | 2025.02.10 |
[java] 큐 활용 문제풀이 백준 4949번 균형잡힌 세상 (0) | 2025.02.08 |
[java] 큐 활용 문제풀이 백준 26043번 식당메뉴 (0) | 2025.02.06 |