[알고리즘] 절댓값 힙
2024. 2. 7. 16:26ㆍ알고리즘 풀이/Java
https://www.acmicpc.net/problem/11286
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;
public class Main {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> heap = new PriorityQueue<>(
new Comparator<Integer>() {
@Override
public int compare(Integer x1, Integer x2) {
if (Math.abs(x1) == Math.abs(x2)) {
return x1 - x2;
} else {
return Math.abs(x1) - Math.abs(x2);
}
}
});
for (int i = 0; i < N; i++) {
int x = Integer.parseInt(br.readLine());
if (x == 0) {
if (heap.isEmpty()) {
sb.append(0).append("\n");
} else {
sb.append(heap.poll()).append("\n");
}
} else {
heap.offer(x);
}
}
System.out.println(sb);
}
}
나의 풀이
- 힙을 활용하되 Comparator를 넣어 절댓값에 따라 정렬해주되 절댓값이 같으면 더 작은 수가 앞에 가도록 해준다.
'알고리즘 풀이 > Java' 카테고리의 다른 글
[알고리즘] 설탕 배달 (0) | 2024.02.13 |
---|---|
[알고리즘] 중위 순회 (0) | 2024.02.12 |
[알고리즘][X] 색종이 (1) | 2024.02.06 |
[알고리즘] 큐 (0) | 2024.02.06 |
[알고리즘] 배열 돌리기 1 (1) | 2024.02.06 |