[백준 2108] 통계학

alsry._.112·2023년 10월 22일
0

백준

목록 보기
91/102

🔗문제 풀러가기
단계별로 풀어보기 단계 20의 3번째 문제이다.

문제 분석


코드

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

int main()
{
    int n, sum = 0;
    cin >> n;

    vector<int> vec;
    map<int, int> map;

    for (int i = 0; i < n; i++)
    {
        int num;
        cin >> num;
        vec.push_back(num);
        sum += num;
        map[num]++;
    }

    double mean = (double)sum / n;
    if (abs(round(mean)) == 0) { cout << 0 << endl; }
    else { cout << round(mean) << endl; }

    sort(vec.begin(), vec.end());
    int median = vec[n / 2];
    cout << median << endl;

    int mode = vec[0];
    int maxFrequency = 0;
    for (const auto& pair : map)
    {
        if (pair.second > maxFrequency)
        {
            mode = pair.first;
            maxFrequency = pair.second;
        }
    }

    vector<int> modes;
    for (const auto& pair : map)
    {
        if (pair.second == maxFrequency)
        {
            modes.push_back(pair.first);
        }
    }
    sort(modes.begin(), modes.end());
    cout << (modes.size() > 1 ? modes[1] : mode) << endl;

    int range = vec[n - 1] - vec[0];
    cout << range << endl;

}
profile
소통해요

0개의 댓글