카테고리 없음

[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);
        }
    }
}