본문 바로가기
C/SWEA

[SWEA] #1984. 중간 평균값 구하기

by 단월໒꒱ 2021. 11. 14.

Difficulty 2

 

[문제]

 

 

 

[코드 및 결과]

 

 

#include <stdio.h>
#include <math.h>

int main(int argc, char** argv) {
    int T, N;
    
    scanf("%d", &T);
    
    for (int t = 1; t <= T; t++) {
        int arr[10] = {0};
        float sum = 0;
        int max = 0;
        int min = 10000;
        float result = 0;
        
        for (int i = 0; i < 10; i++) {
            scanf("%d ", &N);
            arr[i] = N;
            sum += arr[i];
        }
        for (int j = 0; j < 10; j++) {
            if (arr[j] > max)
                max = arr[j];
            else if (arr[j] < min)
                min = arr[j];
        }
        
        result = (sum - max - min) / 8;
        printf("#%d %.0f\n", t, round(result));
        
    }
    
    return 0;
}

 

 

[설명]

테스트케이스 T, 입력받을 숫자 N, 한 줄에 입력받을 숫자들을 저장할 배열 arr, 최대값 max, 최소값 min을 정수로 선언하고 수들의 합 sum, 평균(결과) result를 실수형으로 선언한다.

이때, 각 수는 0부터 10000까지의 수이므로 초기 최댓값은 0으로, 초기 최솟값은 10000으로 설정해준다.

각 수(N)을 입력 받을 때마다 배열 arr에 저장해주고, 각 값들을 sum에 더해준다.

위의 과정을 통해 완성된 배열 arr을 한바퀴 돌면서 해당 배열의 값이 max 값보다 크면 max값에 저장하고 min 값보다 작으면 min값에 저장한다.

구해야 하는 건 최댓값과 최솟값을 뺀 나머지 수들의 평균이므로 sum에서 max와 min을 빼준 값을 8로 나눈 값을 result에 저장한다.

문제에서 소수점 첫째자리에서 반올림한 정수를 출력하라고 하였으므로 math 헤더파일을 넣고 round 함수를 사용하여 반올림해준 뒤 이 값을 출력하도록 한다.

 

/* 여기 써져있는 input 외에 다른 input에 대하여 반올림이 제대로 되지 않아 fail이 떴다.

이전에 비슷한 문제를 0.5 * 10^(-n)을 더해줌으로써 해결한 적이 있어 result에 0.5, 0.05를 더해서 보정해보려고 했지만 둘 다 실패했다.

처음에 되도록이면 함수를 쓰고 싶지 않아서 어떻게 해보려고 했지만 마땅한 해결 방안을 찾을 수 없어 결국에는 math 헤더파일을 넣어 round 함수를 사용해서 해결했다. */

 

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5Pw_-KAdcDFAUq&categoryId=AV5Pw_-KAdcDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

'C > SWEA' 카테고리의 다른 글

[SWEA] #1946. 간단한 압축 풀기  (0) 2021.11.19
[SWEA] #1926. 간단한 369게임  (0) 2021.11.19
[SWEA] #2056. 연월일 달력  (0) 2021.11.14
[SWEA] #1970. 쉬운 거스름돈  (0) 2021.11.06
[SWEA] #2046. 스탬프 찍기  (0) 2021.11.06

댓글