본문 바로가기
자료구조 알고리즘/코딩테스트 풀이

백준 4344번 평균은 넘겠지

by 쿠리의일상 2023. 2. 12.

 

문제 자체는 어렵지 않지만 아직도 자바스크립트가 어렵다...

파일 입출력 때문에 런타임에러가 도대체 얼마나 났는지 모르겠음;

 

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() 안에 들어가는 인자를 반올림해줄 인덱스를 넣어주고 그 인덱스에서 반올림하고 나머지 소수점이 출력된다.