#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, first = 0, second, third, fourth, temp;
vector<pair<int, int>> vec;
cin >> n;
for (int i = 0; i < n; i++){
cin >> temp;
vec.push_back(make_pair(temp, 0));
first += temp;
}
sort(vec.begin(), vec.end());
first = round((double)first / (double)n);
second = vec[n / 2].first;
fourth = vec[n - 1].first - vec[0].first;
if (vec.size() == 1) third = vec[0].first;
else{
//빈도수 계산
for (int i = 0; i < n; i++){
int idx = i;
for (int j = i + 1; j < n; j++){
if (vec[idx].first == vec[j].first){
vec[idx].second++;
i++;
}
else break;
}
}
// 최빈값 중 최대값 찾기
int max = vec[0].second;
for (int i = 1; i < n; i++) if(vec[i].second > max) max = vec[i].second;
// 최빈값이 0이라면 모든 수가 다르므로 2번째 값 반환
if (max == 0) third = vec[1].first;
else{
vector<int> c;
for (int i = 0; i < n; i++){
if (vec[i].second == max)
c.push_back(vec[i].first);
}
if (c.size() == 1) third = c[0];
else third = c[1];
}
}
cout << first << "\n" << second << "\n" << third << "\n" << fourth;
}
빈도수 계산하는 방법-> 정렬이 된 상태이기 때문에 이렇게 생각해서 풀 수 있다.
계속 문제를 틀렸는데 그 이유가 빈도수 계산시 값이 같으면 i값을 증가시켰다. 그랬더니 if문에 vec[i]도 증가시켜서 문제였다. 그래서 if문에 vec[i]값을 고정시켰다.
'코딩 관련 > c++' 카테고리의 다른 글
백준 1966 프로그래머스 Level 2 프린터 큐 Java c++ (0) | 2020.04.24 |
---|---|
백준 수 정렬하기3 (0) | 2020.04.24 |
백준 4949 균형잡힌 세상 (0) | 2020.04.23 |
백준 1918 후위 표기식 (0) | 2020.04.21 |
백준 알고리즘 10817 세 수 중 두번째로 큰 수는? (0) | 2018.04.16 |