생각보다 간단한 문제였다.
N번째 큰 수를 찾아야하므로 크기가 N 초과가 되면 안되는 우선순위 큐를 선언한 다음에 하나씩 입력받다가 N 초과가 되는 경우 제일 작은 값을 뺴주어 N개를 유지시키는 식으로 쭉 입력받고 맨 마지막에 우선순위 큐에 있는 N개의 수 중에서 제일 작은 값이 N번째 큰 수가 된다.
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <queue>
using namespace std;
priority_queue<int, vector<int>, greater<int>> pq;
int main()
{
int n, input;
scanf("%d", &n);
for (int i = 0; i < n * n; i++) {
scanf("%d", &input);
pq.push(input);
if (pq.size() > n) {
pq.pop();
}
}
printf("%d", pq.top());
return 0;
}
https://www.acmicpc.net/problem/2075
'책장 > 알고리즘' 카테고리의 다른 글
[백준-16724] 피리 부는 사나이 (0) | 2021.08.20 |
---|---|
[백준-12852] 1로 만들기 2 (0) | 2021.08.20 |
[백준-9935] 문자열폭발 (0) | 2021.08.19 |
[백준-2166] 다각형의 면적 (0) | 2021.08.19 |