Algorithm/Problem Solve

[백준 11279번] 최대 힙

아네스 2020. 12. 28. 14:17
반응형

 

 

11279번: 최대 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가

www.acmicpc.net

 

C++ 풀이

C++에선 priority_queue로 최대힙을 지원하니 사용하면 된다.

#include <bits/stdc++.h>

using namespace std;
priority_queue<int> pq;

int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int N;
    cin >> N;
    for (int i = 0 ; i< N; i++)
    {
        int tmp;
        cin >> tmp;
        if(tmp ==0)
        {
            if(!pq.empty()){
                cout << pq.top() <<'\n';
                pq.pop();
            }else{
                cout << "0\n";
            }
            
        }else{
            pq.push(tmp);
        }
    }
}

Python 풀이

import sys
import heapq 
input = sys.stdin.readline

N = int(input().rstrip())
hq = list()
for _ in range(N):
    a = int(input().rstrip())
    if a == 0:
        if hq:
            print(-heapq.heappop(hq))
        else :
            print('0')

    else :
        heapq.heappush(hq,-a)

반응형