티스토리 뷰

문제

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		
		PriorityQueue pq = new PriorityQueue<>(new Comparator() {
			@Override
			public int compare(Integer o1, Integer o2) {
				// o1 < o2 == -1 : 음수
				// o1 = o2 == 0 : 0
				// o1 > o2 == 1 : 양수
				Integer n = Math.abs(o1);
				Integer m = Math.abs(o2);
				
				if (n < m) {
					return -1;
				} else if (n > m) {
					return 1;
				} else {
					if (o1 < o2) {
						return -1;
					} else if (o1 > o2) {
						return 1;
					} else {
						return 0;
					}
				}
			}
		});
		
		
		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 + "\n");
				} else {
					sb.append(pq.poll() + "\n");
				}
			} else {
				// x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산
				pq.offer(x);
			}
		}
		
		System.out.println(sb);
	}
}

출처

https://www.acmicpc.net/problem/11286


'알고리즘 > 백준알고리즘(JAVA)' 카테고리의 다른 글

#10757번 : 큰 수 A+B  (0) 2018.09.16
#10826번 : 피보나치 수 4  (0) 2018.09.16
#11650번 : 좌표 정렬하기  (0) 2018.09.15
#11279번 : 최대 힙  (0) 2018.09.15
#1927번 : 최소 힙  (0) 2018.09.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함