BAEKJOON/단계별로 풀어보기

[BOJ] 4344번 : 평균은 넘겠지

말하는 알감자 2022. 8. 1. 23:47

🔒 문제

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

⌨ 입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

🖨 출력

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

📚 예제

Ex)

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

40.000%
57.143%
33.333%
66.667%
55.556%

🔑 c언어 코드


#include<stdio.h>

int main()
{
    int C; // 테스트 케이스 수
    int* N; // 각 테스트 케이스의 학생 수
    int* test; // 테스트의 학생들의 점수
    int* mean; // 각 테스트의 점수 평균
    int* n; // 각 테스트의 평균을 넘는 학생 수

    scanf("%d", &C);
    N = malloc(sizeof(int) * C);
    mean = malloc(sizeof(int) * C);
    n = malloc(sizeof(int) * C);
    for (int i = 0; i < C; i++)
    {
        scanf("%d", &N[i]);
        test = malloc(sizeof(int) * N[i]);
        mean[i] = 0;
        n[i] = 0;
        for (int j = 0; j < N[i]; j++)
        {
            scanf("%d", &test[j]);
            mean[i] += test[j];
        }
        mean[i] /= N[i];
        for (int j = 0; j < N[i]; j++)
        {
            if (mean[i] < test[j])
                n[i]++;
        }
        free(test);
    }

    for(int i=0;i<C;i++)
        printf("%.3f%%\n", (double)n[i] / N[i] * 100);
    // %기호 출력하려면 \출력때처럼 두번해야함

    free(N);
    free(mean);
    free(n);
    return 0;
}

'BAEKJOON > 단계별로 풀어보기' 카테고리의 다른 글

[BOJ] 4673번 : 셀프 넘버  (0) 2022.08.02
[BOJ] 15596번 : 정수 N개의 합  (0) 2022.08.02
[BOJ] 8958번 : OX 퀴즈  (0) 2022.08.01
[BOJ] 1546번 : 평균  (0) 2022.07.26
[BOJ] 3052번 : 나머지  (0) 2022.07.26