자바썸
자바랑 썸타는중
자바썸

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
자바썸

자바랑 썸타는중

백준 1927. 최소 힙(JAVA)
문제풀이/백준

백준 1927. 최소 힙(JAVA)

2022. 3. 13. 21:13

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

public class Main {

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
		int num_cnt = Integer.parseInt(br.readLine());
		
		PriorityQueue<Integer> pq= new PriorityQueue<>();
		
		for(int i = 0 ; i < num_cnt ; i++) {
			int num = Integer.parseInt(br.readLine());
			
			if(num == 0) { // 입력받은 수가 0이라면??
				if( pq.isEmpty() ) {  // 배열이 비어있다면??
					System.out.println(0); // 0을 출력해준다.
				}else { // 배열이 비어있지 않다면 ?? 
					System.out.println(pq.poll()); // 가장 작은 수를 출력하고 제거해준다.
				}
			}else { // 입력받은 수가 0이 아니라면??
				pq.add(num); // 그 수를 배열에 넣어준다.
			}
		}
	}
}

이전 포스팅에서는 Stack을 사용하여 문제를 풀었다면 이번에는 Queue를 사용하는 방법을 알고 싶어서 이 문제를 풀기로 하였다. 먼저 이 문제는 PriorityQueue를 이용하여 쉽게 풀 수 있는 문제였다. 하지만 PriorityQueue를 모르는 상태에서 문제를 풀려고 혼자서 씨름을 하다가 다른 사람들의 도움을 받고 문제를 풀 수 있었다. 

문제를 해석해보면 0을 입력받을 경우 배열의 가장 작은 수를 출력한 후 제거해준다. 0이 아닌 자연수를 입력받은 경우 배열에 그 수를 넣어준다. 만약에 배열이 비어있는 상태에서 0을 입력받으면 0을 출력해준다. 

'문제풀이 > 백준' 카테고리의 다른 글

백준 16173. 점프왕 쩰리(Small)(JAVA)  (0) 2022.03.16
백준 1715. 카드 정렬하기(JAVA)  (0) 2022.03.14
백준 10773. 제로(JAVA)  (1) 2022.03.11
백준 10828. 스택(JAVA)  (0) 2022.03.10
백준 8958. OX퀴즈(JAVA)  (0) 2022.03.08
    '문제풀이/백준' 카테고리의 다른 글
    • 백준 16173. 점프왕 쩰리(Small)(JAVA)
    • 백준 1715. 카드 정렬하기(JAVA)
    • 백준 10773. 제로(JAVA)
    • 백준 10828. 스택(JAVA)
    자바썸
    자바썸

    티스토리툴바