less than 1 minute read

문제접근

입력받은 n * 0.15의 반올림 만큼 포문을 돌면서 큰수와 작은수를 정렬된 배열에서 차례대로 뺀다. 0일경우 0이나오게 예외 처리 한다.

코드

#include <bits/stdc++.h>
using namespace std;


int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n; cin >> n;
	if (n == 0)
	{
		cout << 0;
		return 0;
	}
		
	int ex = round(double(n) * 0.15);
	vector<int> v(n, 0);
	int ans = 0;
	for (int i = 0; i < n; i++)
	{
		cin >> v[i];
		ans += v[i];
	}
	sort(v.begin(), v.end());
	for (int i = 0; i < ex; i++)
		ans -= (v[i] + v[n - i - 1]);
	cout << round(double(ans) / double((n - ex * 2)));

	return 0;
}

Leave a comment