시간초과를 해결하기 위해 사용

  • BufferdReader
  • StringBuilder
import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws Exception {
		PriorityQueue<Integer> maxQueue = new PriorityQueue<>();
		PriorityQueue<Integer> minQueue = new PriorityQueue<>((o1, o2) -> o2.compareTo(o1));

		StringBuilder sb = new StringBuilder("");
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		for (int i = 0; i < N; i++) {
			int num = Integer.parseInt(br.readLine());
			maxQueue.add(num);
			if ((maxQueue.size() + minQueue.size()) % 2 != 0) {
				minQueue.add(maxQueue.poll());
			} else {
				if (minQueue.peek() > num) {
					maxQueue.add(minQueue.poll());
					minQueue.add(maxQueue.poll());
				}
			}
			sb.append(minQueue.peek() + "\n");
		}

		System.out.println(sb);
	}
}

'알고리즘 공부 > boj' 카테고리의 다른 글

boj 1153: 네 개의 소수  (0) 2021.01.10
boj 17182: 우주 탐사선  (0) 2021.01.10
boj 15686: 치킨배달  (0) 2020.12.30
boj 1915: 가장 큰 정사각형  (0) 2020.12.24
boj 10253: 헨리  (0) 2020.12.24

+ Recent posts