728x90
320x100
2108번: 통계학
첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.
www.acmicpc.net
반응형
📌 접근 방법
- 산술평균의 반올림은 round 함수를 사용
- 최빈값 ( -4000 ~ 4000의 숫자들 중 가장 많이 등장한 숫자 출력, 여러 개일 경우 두 번째로 작은 값 출력)
- - 4000~4000범위의 숫자를 +4000하여 ➡ 0~8000 범위로 바꿈
- 배열의 크기가 8001인 배열을 만들어 숫자가 나온 만큼 해당 인덱스의 값을 1 증가시켜줌, 벡터에도 입력값 저장해준다.
- 배열에서 가장 값이 큰 값이 많이 나온 수이기 때문에 해당 인덱스를 max에 넣어줌
- 위에서 구한 max와 배열값과 값이 똑같은 경우 동일하게 많이 나온 수이기 때문에 해당 인덱스들을 새로 만든 벡터에 넣어줌
- 만약 새로운 벡터의 크기가 1이라면 가장 많이 나온 값은 하나이기 때문에 해당 값 출력
- 만약 새로운 벡터의 크기가 1보다 크다면 가장 많이 나온 값이 여러개라는 뜻이기 때문에 2번째로 작은 값 즉, 벡터의 인덱스 i을 출력
✔ round 함수
- 헤더파일 : <cmath>
- 반올림하는 함수
double round(double num);
float round(float num);
long double round(long double num);
double round(T x);
✔ max_element() / min_element()
- 헤더파일 : <algorithm>
- 범위 내에 있는 최댓값이나 최솟값의 위치를 가리키는 iterator 반환
- 만약 여러 개라면 첫 번째로 만족하는 요소 반환
- *를 붙여준다면 값을 반환한다!!
- 시간 복잡도 : O(n)
max_element(arr, arr+size)
min_element(arr, arr+size)
*max_element(arr, arr+size)
*min_element(arr, arr+size)
✅ Pass Code
#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<vector>
#include<iterator>
#include<map>
#include<set>
#include<unordered_set>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin>>N;
int total=0;
vector<int>v;
int arr[8001]={0};
for(int i=0; i<N; i++){
int x;
cin>>x;
v.emplace_back(x);
total+=x;
arr[x+4000]++;
}
sort(v.begin(), v.end());
vector <int> vec;
int max=*max_element(arr,arr+8001);
for(int i=0; i<8001; i++){
if(arr[i]==max){
vec.emplace_back(i-4000);
}
}
double age = (double)total/(double)N;
//산술 평균
if(round(age)==0)cout<<0<<'\n';
else cout<<round(age)<<'\n';
//중앙값
cout<<v[N/2]<<'\n';
//최빈값
if(vec.size()>1)cout<<vec[1]<<'\n';
else cout<<vec[0]<<'\n';
//범위
cout<<v[N-1]-v[0]<<'\n';
return 0;
}
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/003.gif)
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[BOJ/백준/C++] 1874번 (0) | 2024.01.28 |
---|---|
[BOJ/백준/C++] 20920번 영단어 암기는 괴로워 (0) | 2024.01.28 |
[BOJ/백준/C++] 1010번 다리 놓기 (1) | 2024.01.27 |
[BOJ/백준/C++] 4134번 다음 소수 (1) | 2024.01.27 |
[BOJ/백준/C++] 2485번 가로수 (0) | 2024.01.27 |