[코딩테스트 C++]최소힙

후이재·2020년 10월 23일
0

오늘의 문제

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

최소힙

접근 방식

  • priority queue를 이용하여 가장 작은 수를 출력하면 된다.

나의 풀이

#include <iostream>
#include <vector>
#include <queue>
#pragma warning(disable: 4996)
using namespace std;

const int MAX = 100000;
int n;
int ar[MAX];

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    
    scanf("%d", &n);
    int c;
    priority_queue<int, vector<int>, greater<int>> q;
    for(int i=0;i<n;i++){
        scanf("%d", &c);
        if(c == 0){
            if(q.size() == 0)
                printf("0\n");
            else{
                printf("%d\n", q.top());
                q.pop();
            }
        }else{
            q.push(c);
        }
    }
    return 0;
}

다른 풀이

배울 점

  • cin, cout으로 사용하다가 도저히 안되겠어서 scanf, prinf로 바꿨다.
  • 출려깅 있는 코테 볼때 scanf를 써야겠다.
profile
공부를 위한 벨로그

0개의 댓글