알고리즘
73. 최대힙 [우선순위 큐 이용]
홍복치
2021. 2. 2. 20:46
인프런 - it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비 강의를 바탕으로 공부한 내용입니다.
문제는 비공개로 입력예제와 출력예제만을 가지고 포스팅
입력예제 1
5
3
6
0
5
0
2
4
0
-1
출력예제 1
6
5
5
풀이
- 우선순위 큐를 이용한 최대힙 구조 만드는 문제
- 무조건 부모가 자식보다 큰 값을 가져야 한다
=> 우선순위 큐가 자식노드에 부모노드보다 큰 값이 들어오면 위치를 바꿔준다
- top을 출력하면 현재의 루트노드가 출력된다
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
//73. 최대힙 (우선순위 큐)
int main(){
int a;
priority_queue<int> pQ;
while(true){
scanf("%d", &a);
if(a==-1) break;
if(a==0){
if(pQ.empty()) printf("-1\n");
else{
printf("%d\n", pQ.top());
pQ.pop(); //팝하면 루트 노드가 pop
}
}
else pQ.push(a); //push하면 부모랑 비교해서 큰 게 위쪽 레벨로 올라감
}
return 0;
}