4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
[문제]
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
import java.util.Scanner;
public class No4344 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int c = sc.nextInt(); //테스트케이스 수
for(int i=0;i<c;i++) {
int n = sc.nextInt(); //학생 수
int score[] = new int[n];
int sum=0;
for(int j=0;j<n;j++) {
score[j] = sc.nextInt(); //점수 입력
sum += score[j];
}
double avg = (double)sum/n; //점수 평균
int cnt=0;
for(int j=0;j<n;j++) {
if(score[j]>avg) {
cnt++; //평균 넘는 학생 수
}
}
double rate = (double)cnt/n*100; //평균 넘는 학생 비율
System.out.printf("%.3f", rate); //소수점 셋째자리까지
System.out.println("%");
}
}
}
이 문제에서 주의해야 할 것은 마지막 평균의 출력이다.
반올림하여 소수점 셋째자리까지 출력해야 하므로 %.3f 를 이용해 출력했다.
위 방법은 출력시 println이 아닌 printf를 이용해야 한다.