본문 바로가기
백준 알고리즘/백준 CLASS 2

[백준 C++] 18110번: solved.ac

by code_killer 2023. 6. 5.
728x90
반응형

1. 문제

 

https://www.acmicpc.net/problem/18110

 

18110번: solved.ac

5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다.

www.acmicpc.net

 

2. 알고리즘 분류

  • 수학
  • 구현
  • 정렬

 

3. 소스 코드

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

int main() 
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n;
	int res = 0;

	// 난이도 의견 개수 입력
	cin >> n;

	// 난이도 의견 개수가 0이면 0을 반환
	if (n == 0)
	{
		cout << res;
		return 0;
	}

	// 난이도 의견 입력
	vector<int> numbers(n);

	for (int i = 0; i < n; i++)
		cin >> numbers[i];

	// 난이도 정렬
	sort(numbers.begin(), numbers.end());

	// 절사평균으로 제외하는 의견 수 계산
	int idx = round(n * 0.15);
	double sum = 0;

	// 절사평균으로 제외하고 난 뒤 의견들 총합 계산
	for (int i = idx; i < n - idx; i++)
		sum += numbers[i];

	// 평균 계산(반올림)
	res = round(sum / (n - idx * 2));

	// 최종 답 반환
	cout << res;

	return 0;
}

 

4.  유용한 문법 및 알고리즘

 1) Round 함수 (반올림)

#include <cmath>

// 절사평균으로 제외하는 의견 수 계산
int idx = round(n * 0.15);

// 평균 계산(반올림)
res = round(sum / (n - idx * 2));

 2) sort 함수 (vector)

#include <algorithm>

// 난이도 의견 입력
vector<int> numbers(n);

for (int i = 0; i < n; i++)
	cin >> numbers[i];

// 난이도 정렬
sort(numbers.begin(), numbers.end());

 

728x90