JuSeok

1927번

문제

  • 널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.

배열에 자연수 x를 넣는다.
배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다.
프로그램은 처음에 비어있는 배열에서 시작하게 된다.
### 문제 해결 순서 1. 자바에서 제공하는 우선순위 큐 클래스를 사용함. 2. 입력받은 값이 0이고 큐가 비어있으면 0을 출력, 큐가 비어있지 않으면 맨 앞의 값을 출력하고 삭제. 3. 입력받은 값이 0이 아닌 자연수라면 큐에 삽입. 4. 우선순위 큐까지 구현하는게 맞을까..? 아니면 있는 클래스 가져다 쓰는게 좋을까..? ```java import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); PriorityQueue priorityQueue = new PriorityQueue<>(); int n = Integer.parseInt(br.readLine()); for (int i = 0; i < n; i++){ int temp = Integer.parseInt(br.readLine()); // 출력하고 큐에서 삭제 if (temp == 0){ // 만약 큐가 비어있다면 if (priorityQueue.size() == 0){ System.out.println(0); } else{ System.out.println(priorityQueue.poll()); } } // 큐에 삽입 else{ priorityQueue.add(temp); } } } } ```

Tags