본문 바로가기

Algorithm/자료구조

(C++) - 백준(BOJ) 2075번 : N번째 큰 수

반응형

https://www.acmicpc.net/problem/2075

 

2075번: N번째 큰 수

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

www.acmicpc.net

자료구조 (priority_queue)를 사용한 문제였습니다.

 

📕 풀이방법

📔 입력 및 초기화

 배열의 모양은 상관없습니다. 단순하게 n번째 큰 수이기 때문에 heap구조(min heap) 를 사용해 풀었습니다.

n, pq를 선언해줍니다.

 

📔 풀이과정

 1. n을 입력받습니다.

 2. n*n만큼 수를 입력받습니다.

 3. 수를 입력받고 pq에 우선 push합니다.

 4. 만약 pq의 크기가 n을 넘어간다면 pq에 들어있는 원소의 최솟값을 pop해줍니다.

 

📔 정답출력

pq.top을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int n;
priority_queue <int, vector<int>, greater<int>> pq;
int main(){
    scanf("%d",&n);
    for(int i = 0, x; i < n * n; i++){
        scanf("%d",&x);
        pq.push(x);
        if(pq.size() > n) pq.pop();
    }
    cout << pq.top();
}