https://www.acmicpc.net/problem/2108
백준 2108번: 통계학
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int nums[500001];
int main()
{
int N;
int average = 0;
int middle = 0;
int range = 0;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> nums[i];
}
sort(nums, nums + N);
//평균
double sum = 0;
for (int i = 0; i < N; i++)
{
sum += nums[i];
}
average = round(sum / N);
//중앙값
int midNum = N / 2;
middle = nums[midNum];
//최빈값 잘 모르겠음
int most[2] = { -9999, -9999 };
int max = 0;
int count = 1;
int resultMost;
nums[N] = -9999;
for (int i = 0; i < N; i++)
{
if (nums[i] == nums[i + 1])
{
count++;
}
else
{
if (count > max)
{
max = count;
most[0] = nums[i];
most[1] = -9999 ;
}
else if (count == max)
{
if (most[1] == -9999)
{
most[1] = nums[i];
}
}
count = 1;
}
}
if (most[1] != -9999)
{
resultMost = most[1];
}
else
{
resultMost = most[0];
}
range = nums[N - 1] - nums[0];
//출력
cout << average << "\n" << middle << "\n"
<< resultMost << "\n" << range;
}
최빈값을 구하는 과정에서 아주 많이 헤맸다.
평균을 구할 때 쓰는 sum 변수는 float 형이 아닌 double 형으로 선언했어야 했다.
'백준' 카테고리의 다른 글
[백준] 1620번: 나는야 포켓몬 마스터 이다솜 (0) | 2023.01.30 |
---|---|
[백준] 10814번: 나이순 정렬 (0) | 2023.01.14 |
[백준] 4948번: 베르트랑 공준 (0) | 2022.12.19 |
[백준] 1193번: 분수찾기 (C++) (0) | 2022.12.08 |
[백준] 1018번: 체스판 다시 칠하기 (C++) (0) | 2022.03.29 |