개발하는 kim-hasa

[c++][BOJ][1927] 최소 힙 본문

Algorithm/BOJ

[c++][BOJ][1927] 최소 힙

kim-hasa 2022. 3. 2. 14:32

https://www.acmicpc.net/problem/1927

 

1927번: 최소 힙

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

www.acmicpc.net

숫자를 입력받아서 , 0이 입력되는 경우 배열에서 가장 작은 값을 리턴하는 문제입니다.

 

우선순위 queue를 적용했고 , 오름차순으로 정렬했습니다.

 

다만 개수가 많아서 시간초과 이슈가 있어서 , 입출력 속도를 빠르게 하는 코드가 필요합니다.

#include <iostream>
#include <queue>
using namespace std;

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

 

'Algorithm > BOJ' 카테고리의 다른 글

[c++][BOJ][11286] 절댓값 힙  (0) 2022.03.02
[c++][BOJ][11279] 최대 힙  (0) 2022.03.02
[c++][BOJ][1992] 쿼드트리  (0) 2022.03.02
[c++][BOJ][1780] 종이의 개수  (0) 2022.03.02
[c++][BOJ][2630] 색종이 만들기  (0) 2022.03.02