cyphen156
백준-심화 2 2108 통계학 본문
통계학의 기본 연산 4가지 구현하기
- 산술평균 : N개의 수들의 합을 N으로 나눈 값
- 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
- 최빈값 : N개의 수들 중 가장 많이 나타나는 값
- 범위 : N개의 수들 중 최댓값과 최솟값의 차이
제약사항
- 0 < N <= 500,000
- N % 2 == 1 (Odd)
- -4,000 <= Input <= 4,000
주의 사항
- 첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에서 반올림한 값을 출력한다.
- 둘째 줄에는 중앙값을 출력한다.
- 셋째 줄에는 최빈값을 출력한다. 여러 개 있을 때에는 최빈값 중 두 번째로 작은 값을 출력한다.
- 넷째 줄에는 범위를 출력한다.
CPP풀이
통계학_2108.cpp
/**
* 백준 통계학_2108
* 통계학의 기본 연산 4가지 구현하기
* 산술평균 : N개의 수들의 합을 N으로 나눈 값
* 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
* 최빈값 : N개의 수들 중 가장 많이 나타나는 값
* 범위 : N개의 수들 중 최댓값과 최솟값의 차이
*
* 제한사항
*****************************************
* 1 ≤ N ≤ 500,000 *
* N % 2 == 1 *
* -4000 <= K <= 4000 *
*****************************************
*
*
*
* 주의
* 첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에서 반올림한 값을 출력한다.
* 둘째 줄에는 중앙값을 출력한다.
* 셋째 줄에는 최빈값을 출력한다. 여러 개 있을 때에는 최빈값 중 두 번째로 작은 값을 출력한다.
* 넷째 줄에는 범위를 출력한다.
*
* 풀이시간 0분
*/
#include <iostream>
#include <vector>
#include <cmath>
#include <numbers>
#include <algorithm>
using namespace std;
static int arr[8001] = { 0 };
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// 개수, 중앙값, 범위, 최빈값
// 최솟값 최댓값
int N, mid = 0, range = 0, maxFreq = 0,
min = 0x7FFFFFFF, max = 0x80000000;
cin >> N;
int sum = 0;
// 산술평균
double eval = 0.f;
vector<int> numbers;
vector<int> modes;
for (int i = 0; i < N; ++i)
{
int input;
cin >> input;
numbers.push_back(input);
sum += input;
if (input < min)
{
min = input;
}
if (input > max)
{
max = input;
}
int index = input + 4000;
arr[index]++;
}
for (int i = 0; i < size(arr); ++i)
{
if (maxFreq < arr[i])
{
maxFreq = arr[i];
modes.clear();
modes.push_back(i - 4000);
}
else if (arr[i] == maxFreq)
{
modes.push_back(i - 4000);
}
}
sort(numbers.begin(), numbers.end());
eval = (int)round((double)sum / N);
mid = numbers[N/2];
range = max - min;
maxFreq = (modes.size() >= 2 ? modes[1] : modes[0]);
cout << eval << '\n'
<< mid << '\n'
<< maxFreq << '\n'
<< range << '\n';
return 0;
}
모든 예제 코드의 소스파일은 제 개인 깃허브 레포지토리에 있습니다.
Workspace/알고리듬 풀이 at main · cyphen156/Workspace
Studying . Contribute to cyphen156/Workspace development by creating an account on GitHub.
github.com
'컴퓨터공학 > 알고리듬 풀이' 카테고리의 다른 글
백준-재귀 27433 팩토리얼 2 (0) | 2025.07.11 |
---|---|
백준-심화 2 20920 영단어 암기는 괴로워 (3) | 2025.07.11 |
백준-심화 2 26069 붙임성 좋은 총총이 (0) | 2025.07.10 |
백준-심화 2 25192 인사성 밝은 곰곰이 (0) | 2025.07.10 |
백준-심화 2 1037 약수 (2) | 2025.07.10 |