[210701][백준/BOJ] 1927번 최소 힙

KeonWoo Kim·2021년 7월 1일
0

알고리즘

목록 보기
77/84

문제

입출력

풀이

우선순위 큐 (priority_queue) 를 이용해서 문제를 풀 수 있다.

0이 입력되면 큐에 있는 가장 작은 수가 출력이 된다. 큐가 비어있는 상태라면 0을 출력한다.
0 이외의 수가 입력이 되면 큐에 push를 한다.

https://blockdmask.tistory.com/107
위 링크를 보면 우선순위 큐의 선언 방식을 알 수 있다.
우선순위 큐는 내림차순으로 쌓이는게 default이며
priority_queue<int , vector<int>, greater<int> > pq;
로 선언해주면 오름차순 출력이 가능하다.

코드

#include <bits/stdc++.h>
using namespace std;

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	int n;
	cin >> n;
	priority_queue<int, vector<int>, greater<int>> pq;

	while (n--)
	{
		int num;
		cin >> num;

		if (num != 0)
			pq.push(num);
		else
		{
			if (pq.empty())
				cout << 0 << '\n';
			else
			{
				cout << pq.top() << '\n';
				pq.pop();
			}
		}
	}
}
profile
안녕하세요

0개의 댓글

관련 채용 정보