https://www.acmicpc.net/problem/4344
문제 해결 접근 순서
1.반 평균을 구한다.
2.반 평균을 넘은 학생 수를 구한다.
3.학생수 / 전체 학생수의 비율을 구한다.
for(let i = 1; i <= input[0]; i++){
let sum = 0;
let score = 0;
let filterArr = [];
// 1.반평균 구하기
let numArr = input[i].split(' ').map((i)=>+i);
for(let j = 1; j <= numArr[0]; j++){
sum += numArr[j];
}
score = sum/numArr[0];
//2. 반 평균을 넘는 학생 수 구하기
filterArr = numArr.filter((i)=> i > score);
//3. 학생 비율 구하기
let rate = (filterArr.length)/ numArr[0] * 100;
console.log(rate.toFixed(3) + '%');
}
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(file).toString().split('\n');
for(let i = 1; i <= input[0]; i++){
let sum = 0;
let score = 0;
let filterArr = [];
// 1.반평균 구하기
let numArr = input[i].split(' ').map((i)=>+i);
let studentNum = numArr.shift()
for(let j = 0; j < studentNum; j++){
sum += numArr[j];
}
score = sum/studentNum;
//2. 반 평균을 넘는 학생 수 구하기
filterArr = numArr.filter((i)=> i > score);
//3. 학생 비율 구하기
let rate = (filterArr.length)/ studentNum * 100;
console.log(rate.toFixed(3) + '%');
}
numArr[0]
으로 사용한 부분을 shift()
메서드를 이용해 잘라 변수에 저장하여 그 값으로 대체 했더니 정답으로 처리 되었다.toFixed()
메서드를 이용해 소수점 자리수의 값을 얻는다.toFixed()
메서드를 사용하면 원하는 소수점 자리를 얻을 수 있다.shift()
메서드를 이용하면 제거된 값을 반환한다.