본문 바로가기
ALGORITHM/백준 With Node.js

[백준] 4344번 / 평균은 넘겠지 / Node.js

by LAY CODER 2021. 4. 23.

문제

 

대학생 새내기들의 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자리까지 출력하는 것에 유의한다.

댓글