상세 컨텐츠

본문 제목

< 백준 BaekJoon : 1927번 최소 > C++

C++/Baekjoon

by J2on 2024. 3. 15. 00:06

본문

<< 문제 >>

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

 

1927번: 최소 힙

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

www.acmicpc.net

 

저는 간단하게 Priority Queue를 사용했는데, pq는 항상 큰 값으로 정렬하니 반대로 음수로 저장해서 관리해주시면 됩니다.

 

 

<< 코드 >>

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

int main(){
  cin.tie(NULL); //입출력 묶음 해제
  ios_base::sync_with_stdio(false);
  int input;
  cin >> input;

  priority_queue<int> pq;
  int num;
  for(int i=0; i<input; i++){
    cin >> num;
    if(num == 0){
      if(pq.size() == 0){
        cout << 0 <<'\n';
      }
      else{
        cout << -pq.top() << '\n';
        pq.pop();
      }
    }
    else{
      pq.push(-num);
    }
  }
}

 

 

<< Git Hub >> 

https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%EB%B0%B1%EC%A4%80/Silver/1927.%E2%80%85%EC%B5%9C%EC%86%8C%E2%80%85%ED%9E%99

 

관련글 더보기

댓글 영역