문제링크 : https://www.acmicpc.net/problem/18110
18110번: solved.ac
5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다.
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
int arr[300003];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
for(int i=0; i<N; i++)
{
cin >> arr[i];
}
sort(arr, arr+N); //위아래 구별을 위한 정렬
int idx = 0;
idx = round(N*0.15); //위아래 15퍼센트 (반올림)
float result = 0;
for(int i=idx; i<N-idx; i++) //위아래 15퍼센트 제외하고 더해주기
{
result+=arr[i];
}
cout << (N==0 ? 0 : round(result/(N-idx*2))); //0이면 0, 아니면 반올림해서 평균구하기
return 0;
}
처음에 수를 입력받고, 위아래 구별을 해야하기 때문에 정렬을 시행한다.
그리고 위아래 15퍼센트를 계산하는데 이때 주의해야 할 것이 문제에서 반올림을 하라 한 것이다.
이는 round 함수로 간단하게 처리할 수 있다.
이후 result의 값도 이후 평균을 구하는 과정에서 반올림이 필요하므로 처음에 int 자료형이 아닌, double이나 float로 선언해준다.
'백준 > 실버' 카테고리의 다른 글
[백준 20529번] 가장 가까운 세 사람의 심리적 거리 (C++) (0) | 2023.08.04 |
---|---|
[백준 14940번] 쉬운 최단거리 (C++) (0) | 2023.08.03 |
[백준 28217번] 두 정삼각형 (C++) (0) | 2023.08.02 |
[백준 14709번] 여우 사인 (C++) (0) | 2023.08.02 |
[백준 5046번] 전국 대학생 프로그래밍 대회 동아리 연합 (C++) (0) | 2023.08.01 |