728x90
문제
대학생 새내기들의 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%
CODE
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const input = [];
rl.on('line', function (line) {
input.push(line);
}).on('close', function () {
// C :테스트 케이스 개수
const C = +input[0];
for (let i = 1; i <= C; i++) {
// 테스트 케이스 숫자들
const numbers = input[i].split(' ').map(Number);
// N : 학생의 수
const N = numbers[0];
// 학생 점수 총합 = numbers 요소의 총합 - N
let sum = numbers.reduce((acc, cValue) => acc + cValue, -N); // 초기값은 -N
// 평균 점수 = 총 점수 / 학생수
let avg = sum / N;
// 평균보다 높은 학생 count
let count = 0;
for (let j = 1; j <= N; j++) {
// 학생 점수가 평균보다 높으면
if (numbers[j] > avg) {
count++;
}
}
// 평균보다 높은 학생 비율을 백분율(avg*100)로
// 소수점 3자리까지(toFixed(3)) '%'와 같이 출력
console.log(((count / N) * 100).toFixed(3) + '%');
}
process.exit();
});
Comment
평균보다 높은 학생 비율을 백분율로 만드는 것과
소수점 3자리까지 출력하는 것에 유의한다.
'ALGORITHM > 백준 With Node.js' 카테고리의 다른 글
[백준] 1065번 / 한수 / Node.js (0) | 2021.04.24 |
---|---|
[백준] 4673번 / 셀프 넘버 / Node.js (1) | 2021.04.24 |
[백준] 8958번 / OX퀴즈 / Node.js (0) | 2021.04.23 |
[백준] 1546번 / 평균 / Node.js (0) | 2021.04.23 |
[백준] 3052번 / 나머지 / Node.js (0) | 2021.04.22 |
댓글