알고리즘/백준

[백준 2075] N번째 큰 수 (C++)

겜도리도리 2021. 8. 18. 17:08
반응형

문제

백준 2075

 

2075번: N번째 큰 수

첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.

www.acmicpc.net

풀이

내림차순으로 정리하는 우선순위 큐 pq를 선언합니다.

pq에 숫자를 push 해주고, pq의 크기가 n보다 크다면 pq에서 pop 해줍니다.

이렇게 n*n번째 까지 반복한다면 n번째 큰 수가 제일 앞에 위치하게 됩니다.

이 수를 pq.top()으로 출력합니다.

소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
 
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
 
    int n;
    cin >> n;
    priority_queue<intvector<int>, greater<int>> pq;
    for (int i = 0; i < n * n; i++)
    {
        int num;
        cin >> num;
        pq.push(num);
        if (pq.size() > n)
            pq.pop();
    }
    cout << pq.top();
    return 0;
}
cs
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 1756] 피자 굽기 (C++)  (0) 2021.08.19
[백준 5557] 1학년 (C++)  (0) 2021.08.19
[백준 2812] 크게 만들기 (C++)  (0) 2021.08.19
[백준 16234] 인구 이동 (C++)  (0) 2021.08.18
[백준 2636] 치즈 (C++)  (0) 2021.08.18