문제링크: www.acmicpc.net/problem/11286
큐 두 개를 활용해서 해결했다. 코드가 긴 것 같아서 다른 사람의 풀이를 보니
우선순위 큐 하나로 담길 정보에 절대값, 원본값 두개를 같이 담아서 절대값으로 비교하고 원본값을 출력하는
방법을 사용하더라 그게 더 깔끔할 것 같다
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int loop = Integer.parseInt(br.readLine());
PriorityQueue<Integer> minus_q = new PriorityQueue<Integer>();
PriorityQueue<Integer> plus_q = new PriorityQueue<Integer>();
for(int i=0;i<loop;i++) {
int num = Integer.parseInt(br.readLine());
if(num==0) {
if(minus_q.isEmpty() && plus_q.isEmpty()) {
System.out.println(0);
continue;
}else if(minus_q.isEmpty() && !plus_q.isEmpty()) {
System.out.println(plus_q.poll());
continue;
}else if(!minus_q.isEmpty() && plus_q.isEmpty()) {
System.out.println(-minus_q.poll());
continue;
}
if(Math.abs(minus_q.peek())<=plus_q.peek()) {
System.out.println(-minus_q.poll());
}else {
System.out.println(plus_q.poll());
}
}else {
if(num>0) {
plus_q.offer(num);
}else {
minus_q.offer(-num);
}
}
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1956 운동 (0) | 2020.12.23 |
---|---|
[백준] 1504 특정한 최단 경로 (0) | 2020.12.23 |
[백준] 1927 최소 힙 (0) | 2020.12.23 |
[백준] 11279 최대 힙 (0) | 2020.12.23 |
[백준] 2749 피보나치 수 3 (0) | 2020.12.20 |