자료구조 알고리즘/코딩테스트 풀이
백준 4344번 평균은 넘겠지
쿠리의일상
2023. 2. 12. 19:25
문제 자체는 어렵지 않지만 아직도 자바스크립트가 어렵다...
파일 입출력 때문에 런타임에러가 도대체 얼마나 났는지 모르겠음;
const fs = require("fs");
//let inputArr = fs.readFileSync(__dirname + '/input.txt').toString(); VSCode용 input 받기
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let inputArr = fs.readFileSync(filePath).toString();
// console.log("inputArr", inputArr);
inputArr = inputArr.split("\n");
let caseCount = parseInt(inputArr[0]);
// console.log("caseCount", caseCount);
for(let i = 1; i < caseCount + 1; i++) {
let stdCount = parseInt(inputArr[i].split(" ")[0]);
let stdScore = 0;
let sum = 0;
let stdAllScore = [];
let avgUpStdCount = 0;
for(let j = 1; j < stdCount + 1; j++) {
stdScore = parseInt(inputArr[i].split(" ")[j]);
sum += stdScore;
stdAllScore.push(stdScore);
}
let avg = parseFloat(sum) / stdCount;
stdAllScore.forEach(function(sc) {
if(avg < sc) {
avgUpStdCount++;
}
});
console.log(`${((avgUpStdCount / stdCount) * 100).toFixed(3)}%`);
}
문제를 풀다가 다른 언어에서 사용하던 Math.round()와 *, /를 이용한 방법이 잘 안되어서 검색해보았더니
.toFiexed() 를 발견하여 그걸 사용해 보기로 했음
let numObj = 1.23456
console.log(numObj.toFixed()); // 결과: '1'
console.log(numObj.toFixed(6)); // 결과: '1.234560'
console.log(numObj.toFixed(3)); // 결과: '1.235'
console.log(numObj.toFixed(1)); // 결과: '1.2'
numObj = 0.0005678
console.log(numObj.toFixed()); // 결과: '0'
console.log(numObj.toFixed(5)); // 결과: '0.00057'
console.log(numObj.toFixed(3)); // 결과: '0.001'
console.log(numObj.toFixed(1)); // 결과: '0.0'
toFixed() 안에 들어가는 인자를 반올림해줄 인덱스를 넣어주고 그 인덱스에서 반올림하고 나머지 소수점이 출력된다.