BaekJoon

2108번 통계학

GamJia 2023. 4. 3. 09:08

단계별로 풀어보기 - 정렬 - 4단계

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

#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;

int N;
vector<int> arr;
int check[8001];

double average()
{
    double sum=0;
    for(int i=0;i<N;i++)
    {
        sum+=arr[i];        
    }
    return round(sum/N);
}

int median()
{
    return arr[N/2];
}

int mode()
{
    int count=0;
    int result=0;
    
    for(int i=0;i<8001;i++)
    {
        if(count<check[i])
        {
            count=check[i];
            result=i;
        }
    }
    
    for(int i=result+1;i<8001;i++)
    {
        if(count==check[i])
        {
            result=i;
            break;
        }
    }
    return result-4000;    
}

int range()
{
    return arr[N-1]-arr[0];
}

int main()
{
    cin>>N;
    for(int i=0;i<N;i++)
    {
        int temp;
        cin>>temp;
        arr.push_back(temp);
        check[temp+ 4000]++;
    }
    
    sort(arr.begin(),arr.end());
    cout<<average()<<"\n";
    cout<<median()<<"\n";
    cout<<mode()<<"\n";
    cout<<range();
    
    return 0;
}