https://www.acmicpc.net/problem/2075
2075번: N번째 큰 수
첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.
www.acmicpc.net
처음엔 그냥 모든 수를 다 priority queue에 받아서 마지막에 pop하면서 N번째 찾으려고 했는데
그렇게 하니까 메모리 초과가 났음... 모든 원소를 전부다 pq에 넣으면 사이즈가 터진다는 걸 알고
pq의 사이즈가 N보다 작을때는 바로 push하고, pq의 사이즈가 N일때는 top을 pop해주고 push하는 식으로 구현함
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
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;
int temp, ret;
for (int i = 0; i < N*N; i++) {
cin >> temp;
if (pq.size() < N) pq.push(temp);
else {
if (pq.top() < temp) {
pq.pop();
pq.push(temp);
}
}
}
cout << pq.top();
}'알고리즘' 카테고리의 다른 글
| [boj6884/Java] 소수 부분 수열 (0) | 2023.07.17 |
|---|---|
| [boj11140/Java] LOL (0) | 2023.07.17 |
| [boj2599/c++] 짝 정하기 (1) | 2023.05.05 |
| [boj11728/c++] 배열 합치기 (0) | 2023.05.04 |
| [boj4963, boj15652/c++] 섬의 개수, N과 M(4) (0) | 2023.05.02 |