카테고리 없음
[C++] 백준 11279 - 최대 힙
gamxong
2023. 3. 2. 14:11
백준 11279 : 최대 힙
난이도 : 실버 2
시간 : 12분 소요
문제
https://www.acmicpc.net/problem/11279
11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net

풀이 과정
우선순위 큐를 사용하면 최대 힙을 구현할 수 있다.
우선순위 큐의 정렬순서가 최대 힙의 정렬 순서와 같다.
위의 문장을 이해했다면 문제 푸는데는 크게 어려울 것이 없을 거다.
코드자체도 어렵지 않다.
최종 코드
#include <iostream>
#include <queue>
using namespace::std;
int N;
int main(){
scanf("%d", &N);
priority_queue<int> pq;
for(int i=0; i<N; i++){
int tmp;
scanf("%d", &tmp);
if(tmp == 0){
if(pq.empty()){
printf("0\n");
}else{
printf("%d\n", pq.top());
pq.pop();
}
}else{
pq.push(tmp);
}
}
}
