hu6148   1년 전

#define _CRT_SECURE_NO_WARNINGS

#include

int main()

{

int c;

int arr[1000][100];

double avg;

scanf("%d", &c);

for (int i = 0; i < c; i++)

{

scanf("%d", &arr[i][0]);

for (int j = 0; j < arr[i][0]; j++)

{

scanf("%d", &arr[i][j + 1]);

}

}

for (int i = 0; i < c; i++)

{

int total = 0;

int higher = 0;

for (int j = 0; j < arr[i][0]; j++)

{

total = total + arr[i][j + 1];

}

avg = (double)total / (double)arr[i][0];

for (int k = 0; k < arr[i][0]; k++)

{

if ((double)arr[i][k + 1] > avg)

{

higher = higher + 1;

}

}

(double)higher / (double)arr[i][0] * 100;

printf("\n%.3lf%%", (double)higher / (double)arr[i][0] * 100);

}

return 0;

}

kokosoko59   1년 전

int arr[1000][100]; 이라고 선언한 부분이 문제인 것 같습니다. 이 문제에서는 학생 수가 1000명 까지 가능하기 때문에 배열의 두번째 길이를 100이 아니라 1000으로 해주셔야 합니다.

추가로, 이 문제에서는 C에 대한 조건이 없기 때문에 배열의 첫번째 길이를 1000으로 한 것도 부족할 수 있습니다. 운이 좋으면 통과하겠지만 아닐 수도 있습니다.

가능하면 모든 테스트 케이스의 입력을 저장해두지 말고 int arr[1000]으로 한번의 테스트 케이스를 실행할 만큼만 배열을 선언한 다음에 그 배열을 모든 테스트케이스에서 재활용하는 식으로 코드를 구현하는 것을 추천합니다.

댓글을 작성하려면 로그인해야 합니다.