https://www.acmicpc.net/problem/2075
풀이
우선순위 큐를 이용한 간단한 문제입니다.
전체 숫자를 전부 큐에 넣으면 아니나 다를까, 시간초과입니다.
정렬된 우선순위 큐에서 주어진 수 N의 크기보다 더 클 경우 해당 숫자를 pop 해주고,
N개의 큰 수들만 남겨놓는 식으로 풀 수 있습니다.
Code
#include <iostream>
#include <queue>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
priority_queue<int, vector<int>, greater<int>> pq;
for (int i = 0; i < N * N; i++)
{
int num;
cin >> num;
pq.push(num);
if (pq.size() > N)
pq.pop();
}
cout << pq.top() << "\n";
}
'💻 OnlineJudge > Baekjoon' 카테고리의 다른 글
[백준 / BOJ] C++ 1260 DFS와 BFS (0) | 2022.10.14 |
---|---|
[백준 / BOJ] C++ 11000 강의실 배정 (0) | 2022.10.13 |
[백준 / BOJ] C++ 7662 이중 우선순위 큐 (0) | 2022.10.12 |
[백준 / BOJ] C++ 1715 카드 정렬 (0) | 2022.10.06 |
[백준 / BOJ] C++ 1766 문제집 (0) | 2022.10.06 |