728x90
반응형
https://www.acmicpc.net/problem/2075
2075번: N번째 큰 수
첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.
www.acmicpc.net
#include <iostream>
#include <queue>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
priority_queue<long long> pq;
int n, k;
cin >> n;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
cin >> k;
pq.push(-k);
if(pq.size() > n) pq.pop();
}
}
cout << -pq.top() << endl;
return 0;
}
처음에 vector을 사용해서 풀었는데 메모리 초과가 났고, priority_queue로 바꾼 후 N의 최댓값인 1500*1500인 경우에도 모든 수를 입력받도록 해서 메모리 초과가 났다.
priority_queue에 음수로 바꾸어 push한다. 그러면 실제로 가장 작은 수가 top이 되고 pq의 크기가 N보다 커지면 가장 작은 수를 pop하여 메모리를 초과하지 않도록 하였다. 마지막으로 N번째 작은 수는 top에 있는 수 이기 때문에 양수로 바꾸어 출력한다.
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 1753번 최단경로 (C++) (0) | 2022.01.04 |
---|---|
[BOJ] 1764번 듣보잡 (C++) (0) | 2022.01.03 |
[BOJ] 24039번 2021은 무엇이 특별할까? (C++) (0) | 2022.01.01 |
[BOJ] 7662번 이중 우선순위 큐 (C++) (0) | 2021.12.31 |
[BOJ] 2108번 통계학 (C++) (0) | 2021.12.30 |