BJ - 평균은 넘겠지

Goody·2021년 2월 8일
0

알고리즘

목록 보기
33/122

문제

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

  • 입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

  • 출력
    각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

예시

INPUT

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

OUTPUT

40.000%
57.143%
33.333%
66.667%
55.556%

풀이

  • 각 줄의 평균 값을 구해서, 해당 평균 값을 넘는 값들이 차지하는 비율을 구하는 문제이다.

코드

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() {
    const caseNum = input[0];
    const classList = input.slice(1);
    
    for(let i = 0; i < classList.length; i++) {
        let goodStdnt = 0;
                    const _class = classList[i].split(" ");
                    const numberedClass = _class.map((e) => Number(e));
                    const stdntNum = numberedClass[0];
                    const scoreTotal = numberedClass.reduce((acc, cur) => acc += cur) - stdntNum;
                    const scoreAvg = scoreTotal / stdntNum;

                    for(let j = 1; j <= numberedClass.length; j++) {
                        if(numberedClass[j] > scoreAvg) goodStdnt++;
                    }

                    const goodStdntRate = (goodStdnt / stdntNum) * 100;
                    console.log(`${goodStdntRate.toFixed(3)}%`);
    }
    process.exit();
})

0개의 댓글