문제

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

입력

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

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

출력

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

접근방법

케이스별 학생들의 점수를 담는 정수형 이차원배열을 선언하고 각 배열의 0인덱스자리엔 그 배열의 길이값을 담아 넣어줬다. 그래서 각 배열의 0값을 읽어서 그만큼 뒤의 인덱스들을 참조해서 값을 더해준뒤 나눠서 평균을 구하고, 평균보다 위인 학생의 수를 구해 그 수와 전체 학생의 수를 나눈것에 곱하기 100을 해서 백분율을 완성할 수 있었다

어려웠던점

만드는건 수월했지만 역시 디버깅에서 시간을 잡아먹혔다. 실수한 부분은 다음과 같다

#include <stdio.h>
#include <stdlib.h>
void init_list(int ***list, int C)
{
int i;
int j;
int num;
i = 0;
if (!((*list) = malloc(sizeof(int *) * C)))
    return ;
while (i < C)
{
    j = 0;
    scanf("%d", &num);
    if (!((*list)[i] = malloc(sizeof(int) * (num + 1))))
        return ;
    (*list)[i][j++] = num;
    while (j < num + 1)
    {
        scanf("%d", &(*list)[i][j]);
        j++;
    }
    i++;
}