#42. 백준 4344번 문제 풀이: 평균은 넘겠지 문제 원본 보기
점수의 평균을 넘는 학생들의 비율을 계산. 입력: 첫줄에 테스트 케이스 개수, 둘째 줄에 첫수는 학생수, 이어서 점수들..반복 출력: 각 케이스마다 한 줄씩 평균을 넘는 학생의 비율을 반올림하여 소수점 셋째 자리까지 출력
입력/출력
--입력--
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
--출력--
40.000%
57.143%
33.333%
66.667%
55.556%
문제풀이+해설
평균을 실수로 구해서 소수점 셋째 자리까지 출력하는 게 핵심이다.

소수점을 세자리까지 출력하는 문자열 포맷은 다음과 같다.

파이썬: f-string, f'{변수 :.xf}' 
 print(f'{3.1415 :.2f}') # 3.14 , 소수 두자리까지 반옴림 출력
C언어: 
 printf("%.3f", av);
C++: cout 에서 사용할 경우. 
 cout << fixed; cout.precision(n); // n 소수자릿수
code sol.
#include <stdio.h>

int main() {
  int i, j, c, n, sum, count;
  double av; // 평균
  int a[10001]; // 학생 점수를 받을 배열
  scanf("%d", &c); // 테스트 케이스 개수를 입력받아 정수로 변환해서 받는다.
  for(i = 0; i < c; i++) { // 케이스 숫자 만큼 루프
    scanf("%d", &n); // 학생수 n 을 받는다.
    sum = 0; // 평균을 구하기 위한 합계변수
    for(j = 0; j < n; j++) { // 학생수 만큼 루프
      scanf("%d", &a[j]); // 첫번째점수를 입력받아 배열에 넣는다.
      sum += a[j]; // 합계 계산
    }
    av = (double)sum / n; // 평균계산
    count = 0; // 평균을 넘는 점수수 카운트
    for(j = 0; j < n; j++) { // 갯수만큼 반복해서 평균 넘는 개수를 구함
      if((double)a[j] > av) count++; // 평균을 넘으면 카운트 증가
    }
    av = (double)count / n * 100; // 평균넘는 학생 수 평균 계산
    printf("%.3f%%\n", av); // %.3f 포맷으로 소수세자리까지 출력
  }
  return 0;
}
© 코드솔 - CodeSol. All Rights Reserved.