Problem
https://www.acmicpc.net/problem/2075
2075번: N번째 큰 수
첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.
www.acmicpc.net
Solve
- 원소 입력 시 자동으로 정렬되는 priority_queue 사용
- priority_queue<int, vector<int> , greater<int>> pq; // 내림차순 정렬되는 pq 선언
- 입력되는 숫자를 삽입
- 조건은 pq의 size가 N보다 작으면 무조건 삽입
- N보다 크면 삽입 후 pq.pop() (가장 작은 수 pop)
- 마지막에는 pq의 size가 N이됨 , 즉 pq.top()이 N번째 큰 수
#include <iostream>
#include <queue>
using namespace std;
class sol
{
int N;
priority_queue<int, vector<int>, greater<int>> pq;
public:
sol(const int& n) : N(n)
{
}
void solution()
{
int num;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
cin >> num;
if (pq.size() < N)
{
pq.push(num);
}
else
{
pq.push(num);
pq.pop();
}
}
}
cout << pq.top();
}
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
sol S(n);
S.solution();
return 0;
}
'C++ > 백준 문제풀이' 카테고리의 다른 글
[줄 세우기 - 백준] / vector, iterator(반복자) (0) | 2023.05.16 |
---|---|
[막대기 - 백준] / stack, 자료구 (1) | 2023.05.16 |
[후위 표기식2 - 백준] / Stack, queue (0) | 2023.05.05 |
C++ [이중 우선순위 큐-백준] / map, key값으로 찾고 value로 중복 갯수 확인 , 반복자 이 (0) | 2023.04.27 |
C++ [비밀번호 찾기_백준] / #map #자료구조 (0) | 2023.04.07 |