백준 4344번 JavaScript 문제풀이

Cho Dragoo·2021년 5월 15일
0
post-thumbnail

JavaScript 백준 온라인 알고리즘 공부

백준 4344 번 JavaScript 문제풀이

평균은 넘겠지
https://www.acmicpc.net/problem/4344



본인이 제출한 답

const fs = require("fs");
const input = (process.platform === "linux"
  ? fs.readFileSync("/dev/stdin").toString()
  : `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
`
)
  .trim()
  .split("\n");

let inputLine = input.map((num) =>
  num.split(" ").map((array) => Number(array))
);
let answer = "";

let nNumber = inputLine[0][0];

for (let i = 1; i <= nNumber; i++) {
  let scoreSum = 0; // 이 세 변수가 이 스코프 밖에 벗어나면 초기화를 못한체
  let midScore = 0; //  다음 inputLine 배열에서 저징된 변수를 그대로 쓰게되고
  let count = 0;    //  연산결과는 엉망이 된다.
  for (let j = 1; j <= inputLine[i][0]; j++) {
    scoreSum += inputLine[i][j];
  }
  midScore = scoreSum / inputLine[i][0];

  for (let z = 1; z <= inputLine[i][0]; z++) {
    let parMidScore = parseInt(midScore);
    if (parMidScore < inputLine[i][z]) {
      count++;
    }
  }
  answer += (100 / (inputLine[i][0] / count)).toFixed(3) + "%" + "\n";
}

console.log(answer);

풀이과정 소감

  • for 문안에 또 for 문 두 번을 연달아 쓰게 됐는데 연산에 쓰일 변수를 제 위치에 지정해 초기화하지 못해서 이번에도 애먹었다. 문제해결은 작은 문제부터 잘게 나눠서 해결해야 한다는 상식은 머리로는 알고 있어도 실전에서 자연스럽게 적용하기는 쉽지 않았다. 여하튼 이번 문제의 핵심은 변수를 초기화 할 순서를 유심 할 것!!! 명심해야겠다.
profile
어떤 문제든 파악 할 수 있으며 해결책을 찾을 수 있는 개발능력을 꿈꾸고 있습니다.

0개의 댓글