대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
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%
테스트 케이스의 개수 C를 입력 받은 뒤 이를 기준으로 while 루프를 돌면서 N을 입력받음.
입력받은 N으로 점수를 담을 배열 score를 동적 할당하고, 평균을 넘는 학생들을 카운트 할 pass, 평균 점수를 담을 avg 변수 사용함.
점수를 입력받아 평균을 구한 후, 평균 점수를 넘는 학생들을 카운트 하고 이 비율을 구해서 출력하면 됨.
#include <iostream>
using namespace std;
int main(void)
{
cout << fixed;
cout.precision(3); // 소수점 이하 3자리
int C, N;
cin >> C;
while (C--)
{
cin >> N;
int* score = new int[N];
// pass: 평균을 넘는 학생들 / avg: 평균
double pass = 0, avg = 0;
// 입력 받고 누적합
for (int i = 0; i < N; i++) {
cin >> score[i];
avg += score[i];
}
avg /= N; // 평균 구하기
// 평균보다 높은 점수 찾기
for (int j = 0; j < N; j++)
if (score[j] > avg) pass++;
// 비율 구해서 출력
cout << pass / N * 100 << "%\n";
delete[] score;
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int C = Integer.parseInt(br.readLine());
int N;
String[] s;
while (C-- != 0)
{
s = br.readLine().split(" ");
N = Integer.parseInt(s[0]);
int[] score = new int[N];
// pass: 평균을 넘는 학생들 / avg: 평균
double pass = 0, avg = 0;
// 입력 받고 누적합
for (int i = 1; i <= N; i++) {
score[i-1] = Integer.parseInt(s[i]);
avg += score[i-1];
}
avg /= N; // 평균 구하기
// 평균보다 높은 점수 찾기
for (int j = 0; j < N; j++)
if (score[j] > avg) pass++;
// 비율 구해서 출력
System.out.printf("%.3f%%\n", pass / N * 100);
}
}
}