본문 바로가기
CS(Computer Science)지식/[C++][코딩 테스트] 자료구조 및 알고리즘

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

by 엔지니어 청년 2024. 2. 2.

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

해당 문제는 굉장히 쉬워 보이나 그 쉬운 생각으로 풀게 되면 메모리를 초과하게 된다. 따라서 가장 큰 N개의 수 만큼만 담고 있으면 메모리를 초과할 일이 없게 된다.

#include <bits/stdc++.h>
using namespace std;

int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);

  int N, num;
  priority_queue<int, vector<int>, greater<>> pq;
  cin >> N;
  for (int i = 0; i < N * N; i++) {
    cin >> num;
    pq.push(num);
    if (N < (int)pq.size()) pq.pop();
  }
  cout << pq.top() << '\n';
}

/*
문제의 메모리 제한을 고려해 우선순위 큐에 상위 N개의 값만 가지고 있는다.
*/