my study.

Coding Test/Baekjoon

[백준] 1927 최소 힙, java

fftl 2022. 12. 11. 15:08
 

1927번: 최소 힙

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

www.acmicpc.net

문제 간단 설명

이 문제는 제목처럼 최소 힙이라는 자료구조를 사용하는 해결 방법인 문제입니다. 저는 최소 힙의 역할을 해줄 수 있는 우선순위 큐(Priority Queue)를 이용하여 간단하게 풀이 하였습니다.


풀이

Java에서 제공하는 라이브러리인 Priority Queue를 이용하여 문제에서 주어진 그대로 사용하였습니다.


코드

package com.baekjoon.silver;

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

public class Main_BJ_01927_S2_최소힙 {

	public static void main(String[] args) throws Exception{

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		
		//최소 힙 역할을 해줄 PriorityQueue를 만들어 주었습니다.
		PriorityQueue<Integer> pq = new PriorityQueue<>();
		
		StringBuilder sb = new StringBuilder();
		
		//요구사항에 맞도록 입력 값이 자연수일경우 pq에 입력해주고
		//0일 경우에는 최소값을 출력하는 동작을 반복합니다.
		for (int i = 0; i < n; i++) {
			int now = Integer.parseInt(br.readLine());
			if(now == 0) {
				if(pq.isEmpty()) sb.append(0+"\n");
				else sb.append(pq.poll()+"\n");
			} else {
				pq.add(now);
			}
		}
		
		//결과물 출력!
		System.out.println(sb.toString().trim());
	}
}

'Coding Test > Baekjoon' 카테고리의 다른 글

[백준] 9019 DSLR, java  (0) 2022.12.14
[백준] 7569 토마토, java  (0) 2022.12.12
[백준] 1764 듣보잡, java  (0) 2022.12.11
[백준] 13460 구슬 탈출 2, java  (0) 2022.11.27
[백준] 10989 수 정렬하기 3, java  (0) 2022.07.11