728x90
https://www.acmicpc.net/problem/2075
문제 풀이
우선순위 큐로 풀 수 있는 문제이다.
우선순위 큐를 올림차순으로 구현한다.
N개의 숫자만 가지고 있으면 되기 때문에 큐의 크기가 N보다 커지면 가장 작은 값을 pop 하면 된다.
올림차순이라서 단순하게 pop만 하면 되고 모든 반복이 끝나면 top을 출력하면 된다.
느낀 점
처음에는 모든 값을 우선순위 큐에 넣었지만 메모리 초과가 발생하였다. N개의 숫자만 가지고 있으면 되는 점을 이해하면 쉽게 풀 수 있는 문제이다.
코드
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <functional>
using namespace std;
int n;
priority_queue<int, vector<int>, greater<int>> pq;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int tmp;
cin >> tmp;
pq.push(tmp);
if (pq.size() > n)
pq.pop();
}
}
cout << pq.top();
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C++] 백준 11279번 : 최대 힙 (0) | 2021.11.12 |
---|---|
[C++] 백준 14425번 : 문자열 집합 (0) | 2021.11.06 |
[C++] 백준 7662번 : 이중 우선순위 큐 (0) | 2021.10.26 |
[C++] 백준 1620번 : 나는야 포켓몬 마스터 이다솜 (0) | 2021.10.19 |
[C++] 백준 1918번 : 후위 표기식 (0) | 2021.10.17 |
댓글