알고리즘

[boj2075/c++] N번째 큰 수

IT 참다랑어 2023. 5. 5. 23:51

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