Fascination
article thumbnail
Published 2021. 9. 16. 11:05
[C++] BOJ 11279 : 최대힙 CODE/BOJ

[문제]

 

11279번: 최대 힙

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

www.acmicpc.net

 

 

[문제 풀이]

- 우선 순위 큐를 사용

- 입력 받은 수가 0일 때, 큐가 비어 있으면 0을 출력하고 아니라면 가장 위에 있는 수를 출력

 

 

[코드]

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

int n; // 입력받을 정수의 개수
priority_queue<int> pq;
int main() {

    cin.sync_with_stdio(0); // 시간 초과 해결
    cin.tie(0);

    cin >> n;
    for (int i=0;i<n;i++) { // 연산의 개수만큼 반복
        int x; // 연산에 대한 정보를 받아줄 변수
        cin >> x;
        if (x == 0) { //x가 0이라면 (0이 입력된 시점에서의 가장 큰 값을 출력하기 때문)
            if (pq.empty()) cout << "0\n";
                // queue가 비어있을 경우 0 출력
            else {
                cout << pq.top() << "\n";
                pq.pop();
                // 가장 위에 들어가있는 값을 출력
                // pop()을 해주면 queue의 선입선출 특징으로 맨위의 값이 나오게 됨
            }
        } else { // x가 0이 아니라면
            pq.push(x); // 입력한 숫자를 priority_queue에 삽입
        }
    }
    return 0;
}

 

 

[채점 결과]

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

[C++] BOJ 2959 : 거북이  (0) 2021.09.17
[C++] BOJ 2752 : 세수정렬  (0) 2021.09.17
[C++] BOJ 1158 : 요세푸스 문제  (0) 2021.09.16
[C++] BOJ 12605 : 단어순서 뒤집기  (0) 2021.09.15
[C++] BOJ 17608 : 막대기  (0) 2021.09.15
profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!