https://www.acmicpc.net/problem/18110
상위 15%와 하위 15%를 계산한 후 마지막 절사평균을 계산할 때 C언어 라이브러리의 round 함수를 사용하면 됩니다.
round 함수는 변수의 소수점을 반올림하는 함수입니다. 상하위 %를 인덱스로 쉽게 가리기 위해 정렬을 하는데, C언어 내장 함수인 qsort 함수를 사용했습니다. qsort의 시간복잡도는 O(nlogn)이기에 시간 초과 방지에도 좋습니다.
1. 난이도를 배열에 저장합니다.
2. 배열을 정렬합니다. 오름차순이냐 내림차순이냐는 크게 상관없습니다. 이후 사용자들의 의견의 개수에 따른 상하위 15%의 값을 구합니다.
3. 상하위 15%의 값에 따라 난이도의 평균을 구합니다. 이 때 round 함수를 사용합니다.
<코드>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int n;
scanf("%d", &n);
if(n == 0) {
printf("0\n");
return 0;
}
int arr[n];
for(int i = 0; i < n; i++) scanf("%d", &arr[i]);
qsort(arr, n, sizeof(int), compare);
int idx = (int)round(n * 0.15);
double sum = 0;
int count = n - 2 * idx;
for(int i = idx; i < n - idx; i++) sum += arr[i];
printf("%d\n", (int)round(sum / count));
return 0;
}
저는 리눅스를 통해 코딩을 하기에 <math> 라이브러리를 사용할 경우 컴파일을 할 때 단순히 <gcc -o file file.c> 를 하니 제대로 안됐습니다. <gcc -o file file.c -lm> 로 끝에 -lm을 추가해야 합니다. 리눅스로 C 코딩할 때 참고합시다.
'백준' 카테고리의 다른 글
/<> 백준 1015번 : 수열 정렬 (C언어) (0) | 2024.08.02 |
---|---|
/<> 백준 1913번 : 달팽이 (C언어) (0) | 2024.08.02 |
/<> 백준 1932번 : 정수 삼각형 (C언어) (0) | 2024.07.30 |
/<> 백준 22940번 : 선형 연립 방정식 (C언어) - 가우스 소거법 (0) | 2024.07.29 |
/<> 백준 12919번 : A와 B 2 (C언어) (0) | 2024.07.29 |