본문 바로가기

백준/실버

[백준 2548번] 대표 자연수 (C++)

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

 

2548번: 대표 자연수

첫째 줄에는 자연수의 개수 N이 입력된다. N은 1 이상 20,000 이하이다. 둘째 줄에는 N개의 자연수가 빈칸을 사이에 두고 입력되며, 이 수들은 모두 1 이상 10,000 이하이다.

www.acmicpc.net

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

int main(void) {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
   
    int N;
    cin >> N;
    int arr[20001];

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

    sort(arr, arr+N);

    if(N%2 == 0)  //중앙값이 2개인 경우
    {
        cout << arr[N/2-1];  //더 작은 중앙값 출력
    }
    else
    {
        cout << arr[N/2];
    }
    return 0;
}

브루트포싱으로 일일이 전부 확인하여 풀 수도 있지만, 중앙값을 찾는 방식으로 접근하면 훨씬 간단하게 풀 수 있다.