알고리즘 모음(C++)

백준 1927 - 최소 힙(C++) 본문

백준

백준 1927 - 최소 힙(C++)

공대생의 잡다한 사전 2021. 11. 10. 01:13

문제 링크입니다. https://www.acmicpc.net/problem/1927

 

1927번: 최소 힙

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

www.acmicpc.net

우선순위 큐를 사용하면 쉽게 풀 수 있는 문제였습니다.

문제 조건
출력 예시

 

우선순위 큐를 선언하여 문제 조건에 맟게 출력만 해주면 되는 문제입니다.

오름차순으로 정렬을 해야하기에, 내림차순과는 다르게 선언을 해줘야합니다.

 

int N;
priority_queue<int, vector<int>, greater<int>> qu;

int main() {
	cin.tie(0);
	cout.tie(0);
	cin >> N;
	for (int i = 0; i < N; i++) {
		int x;
		cin >> x;
		qu.push(x);
	}
	while (!qu.empty()) {
		cout << qu.top() << " ";
		qu.pop();
	}
	return 0;
}

오름차순으로 나오는 것을 확인할 수 있습니다.

 

자세한 것은 코드를 참고해주세요.

#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstdio>
#include <string>
#include <deque>
#include <stack>

using namespace std;

int N;
priority_queue<int, vector<int>, greater<int>> qu;

int main() {
	cin.tie(0);
	cout.tie(0);
	cin >> N;
	for (int i = 0; i < N; i++) {
		int x;
		cin >> x;
		if (x == 0 && qu.empty()) {
			cout << "0" << "\n";
		}
		else if (x == 0 && !qu.empty()) {
			cout << qu.top() << "\n";
			qu.pop();
		}
		else qu.push(x);
	}
	return 0;
}

 

 

질문 및 조언 댓글 남겨주세요!

'백준' 카테고리의 다른 글

백준 2630 - 색종이 만들기(C++)  (0) 2021.11.14
백준 11279 - 최대 힙(C++)  (0) 2021.11.11
백준 18870 - 좌표 압축(C++)  (0) 2021.11.10
백준 18111 - 마인크래프트(C++)  (0) 2021.11.06
백준 1966 - 프린터 큐(C++)  (0) 2021.11.05