[ 다먹살 ]/- Coding

[백준] 1927 최소 힙

엉망으로살기 2021. 11. 12. 23:16
반응형

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

 

1927번: 최소 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

 

자바에는 우선순위 큐 라이브러리(import java.util.PriorityQueue)가 있기 때문에 이것을 사용하면 간단히 해결할 수 있는 문제였다. 


문제 및 입출력


코드

import java.util.PriorityQueue;
import java.util.Scanner;

public class Main
{
     public static void main(String[] args)
     {
         Scanner sc = new Scanner(System.in);
         PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
         StringBuilder sb = new StringBuilder();
         int n = sc.nextInt();

         for(int i=0; i<n; i++)
         {
             int input = sc.nextInt();

             // case 1 : 0을 입력받았을 때
             if(input==0)
             {
                  // case 1-1 : 우선순위 큐가 비어있으면 0을 출력
                  if(pq.isEmpty())
                  {
                       sb.append(0 + "\n");
                  }
                  // case 1-2 : 우선순위 큐가 비어있지 않으면 최소 값을 출력
                  else
                  {
                       sb.append(pq.poll() + "\n");
                  }
             }
            // case 2 : 0이 아닌 값을 입력받았을 때는 우선순위 큐에 삽입
             else
             {
                  pq.add(input);
             }
         }

         System.out.println(sb.toString());
         sc.close();
     }
}

 

반응형