solved.ac
실제 solved.ac에 있는 문제들의 난이도 반영 알고리즘을 따와서 만든 문제. 절사평균
이라는 개념은 처음 들었는데 통계학적으로 outlier들을 제거할 수 있는 유용한 방법인 것 같다. 문제는 주어진 조건대로만 구현하면 쉽게 풀렸는데, 다만 index 범위의 설정과, (n=0)같은 예외처리에 신경써야했던 문제다.
내 풀이
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
int n, rate;
vector<int> rates;
cin >> n; // 난이도 의견의 수
if (n == 0){
cout << 0;
return 0;
}
for (int i=0; i<n; i++){
cin >> rate;
rates.push_back(rate);
}
sort(rates.begin(), rates.end());
int cut = round(n*0.15);
float average = 0;
for (int i=cut; i<n-cut; i++){
average += rates[i];
}
average /= (n - 2*cut);
cout << round(average);
return 0;
}