백준 알고리즘 4344번: 평균은 넘겠지
오늘의 코딩 문제 평균은 넘겠지! 이거는 문제 출력은 문제가 없었는데 계속 틀렸다고 하니깐 열받아서 계속해서 해보니 자료형 때문에 틀렸다고 떴다. double 을 써야 맞는 문제... 도대체가!! 뭐가문제인거지?! float여도 큰문제 없는데! 아무튼 문제는 이렇다.
문제
대학생 새내기들의 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);
}
}