개발/알고리즘

1927 최소 힙 (우선 순위 큐) 실버 2

차가운콩 2024. 5. 9. 23:28

문제를 풀기 전에

 

우선순위 큐? 힙? 뭔지 모르겠어서 검색을 해봤다
최대 힙과 최소 힙이 있는데

최대 힙은 이진 트리가 내림차순으로 데이터가 큐에 들어가고
최소 힙은 이진 트리가 오름차순으로 데이터가 큐에 들어간다

 

해당 문제를 STL 최소 힙을 사용해서 풀었다

#include <iostream>
#include <queue>
#include <vector>

using namespace std;

int main(){
	
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	priority_queue<long long, vector<long long>, greater<long long>> Q;
	
	
	long long n, x;
	
	
	cin >> n;
	
	
	for(long long i = 0; i < n; i++){
		cin >> x;
		
		if(x == 0) {
			if(Q.empty()){
				cout << 0 << '\n';
			}
			else {
				cout << Q.top() << '\n';
				Q.pop();
			}
		}
		else{
			Q.push(x);
		}
	
	}
}