백준 알고리즘

백준 알고리즘 4344번: 평균은 넘겠지

여의도비 2018. 8. 27. 17:23

오늘의 코딩 문제 평균은 넘겠지! 이거는 문제 출력은 문제가 없었는데 계속 틀렸다고 하니깐 열받아서 계속해서 해보니 자료형 때문에 틀렸다고 떴다. double 을 써야 맞는 문제... 도대체가!! 뭐가문제인거지?! float여도 큰문제 없는데! 아무튼 문제는 이렇다.



시간 제한메모리 제한제출정답맞은 사람정답 비율
1 초128 MB233768796779339.627%

문제

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

입력

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

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

출력

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

예제 입력 1 

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

예제 출력 1 

40.000%
57.143%
33.333%
66.667%
55.556%



그리고 내가 한참 자료형 때문에 고민했던 소스다. 일단 처음에 double 자료 변형해줄때 괄호를 잘못씌운것과  %를 scanf에서 적용할때 어떻게 하는건지 찾아봤었다. 뭐 이런 사소한 것들 조금씩 기억해나가면서 문제풀면 언젠가는 실력이 늘겠지...!


#include <stdio.h>


int main() {

int a = 0, num = 0, score[1000] = {0}, sum = 0, count = 0;

scanf("%d", &a);

for(int i = 0; i < a; i ++){

scanf("%d", &num);

for(int i =0; i < num; i++){

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

sum += score[i];

}

double avg = (double)sum / num;

sum = 0;

                count = 0;

for(int i = 0; i < num; i++){

if(score[i] > avg){

count++;

 

}


}

printf("%.3lf%%\n", (double)count *100 / num);


}

}