대학생 새내기들의 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++;
}