본문 바로가기

백준/실버

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

문제링크 : https://www.acmicpc.net/problem/2075

 

2075번: N번째 큰 수

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

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;

int N, arr[2250001];

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

    cin >> N;
    for(int i=0; i<N*N; i++)
    {
        cin >> arr[i];
    }

    sort(arr, arr+N*N); //정렬

    cout << arr[N*N-N]; //N번째로 큰 수
    
    return 0;
}

 

메모리 제한을 참고해야하는 문제이다.

우선 범위 값에 해당하는 1500*1500에 int 4바이트를 곱하면 9000000바이트가 나온다. (9MB)

따라서 메모리 제한의 12MB에 걸리지 않는 것을 볼 수 있다.

 

메모리 제한에 걸리지 않으므로, N*N까지 모두 입력받고 그대로 정렬해준 다음 N*N-N의 위치를 출력해주면 된다.