자두의 데브로그

[자바] 백준 11279번 최대 힙 본문

코딩테스트/Java

[자바] 백준 11279번 최대 힙

왕자두 2024. 10. 9. 15:17

 

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

 

문제가 어려운 건 아니었고 우선순위 큐를 어떻게 사용하는지 감 잡고 싶어서 문제를 풀어봤는데 우선순위를 최대로 하는지, 최소로 하는지에 따라 어떻게 우선순위 큐를 만들면 되는지를 알면 되는 문제였다. 처음에 풀었을 때에는 sb 없이 x가 0일 때 System.out.println으로 매번 출력했었는데 sb로 한 번에 출력하도록 수정하니까 시간이 거의 1/5 줄었다. 메모리도 물론 줄었음! StringBuilder 사용하는 거 잊지 말자 ⭐️

 

import java.util.*;
import java.io.*;

class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int m = Integer.parseInt(br.readLine());
        
        PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
        for(int i = 0; i < m; i++){
            int x = Integer.parseInt(br.readLine());
            if(x == 0){
                if(pq.isEmpty()) sb.append(x);
                else sb.append(pq.poll());
                sb.append("\n");
            }
            else{
                pq.add(x);
            }
        }
        System.out.println(String.valueOf(sb));
    }
}