접근

절댓값이 작은 순으로, 만약 같다면 원래 값이 작은(즉 음수 먼저) 출력해야 한다. 이를 위해 절댓값과 기존 값을 가지는 클래스를 선언하고, 정렬 조건을 정의하여 우선순위 큐에 담아줬다. 배열이 비어있는 경우는 곧 큐가 비어있는 경우로 예외 처리를 해줬다. 

 

코드

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

+ Recent posts