문제
10개 수를 입력 받아 최대 수와 최소 수를 제외한 나머지의 평균값을 출력한다.
소수점 첫째 자리에서 반올림한 정수
조건
각 수는 0이상 10,000이하의 정수
코드
#include <stdio.h>
#include <math.h>
int main(void) {
int test_case, T;
scanf("%d", &T);
for (test_case = 1; test_case <= T; ++test_case)
{
int n[10] = { 0 };
int min = 10000, max = 0;
for (int i = 0; i < 10; i++) {
scanf("%d", &n[i]);
}
//min, max
for (int i = 0; i < 10; i++) {
if (n[i] < min) min = n[i];
if (n[i] > max) max = n[i];
}
double avg = 0;
for (int i = 0; i < 10; i++) {
avg += n[i];
}
avg = avg - min - max;
avg = avg / 8;
printf("#%d %d\n", test_case, (int)(avg + 0.5));
}
return 0;
}
min과 max를 구해놓고, 배열의 전체 합에서 min과 max를 빼 평균을 구했다.
반올림 때문에 고민했는데, round로 소수점 한자리에서 반올림하려니까 잘 되지 않아서 double 값에 0.5를 더하고 int형으로 변환하는 방법을 사용했다. 이렇게 하면 소수점자리가 5보다 높을 때 올림이 되고 다운캐스팅으로 소수점은 버려진다.
'SWEA > [D2]' 카테고리의 다른 글
[C] SWEA 2007 패턴 마디의 길이 (0) | 2022.03.03 |
---|---|
[C언어] SWEA 2005 파스칼의 삼각형 (0) | 2022.03.01 |
[C언어] SWEA 1285 아름이의 돌 던지기 (0) | 2022.03.01 |
[C언어] SWEA 1288 새로운 불면증 치료법 (0) | 2022.02.27 |
[C언어] SWEA 1986 지그재그 숫자 (0) | 2022.02.27 |