JavaScript 백준 온라인 알고리즘 공부
백준 1546 번 JavaScript 문제
const fs = require("fs");
const [...arr] = (process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `3
10 20 30
`
)
.trim()
.split("\n");
let inputLines = [];
let arrLines = arr.map((element) => element.split(" "));
arrLines.forEach((arrLines) => {
inputLines.push(arrLines.map((e) => Number(e)));
});
let N = inputLines[0][0];
let newArr = inputLines[1].sort((a, b) => a - b);
let M = newArr[N - 1];
let sum = 0;
let scoreSumArr = newArr.map((score) => (score / M) * 100);
scoreSumArr.forEach((score) => {
sum += score;
});
let answer = sum / N;
console.log(answer);
점수가 들어간 배열에 sort()
를 적용하면 그 배열의 N-1
번째가 최댓값의 점수가 된다. 숫자타입을 다루는 배열에 최소 최댓값의 순서 정렬작업은 sort((a, b) => a - b)
는 거의 필수이며 공식이 되버린 것 같다. a,b 를 넣는 습관을 들여야겠다고 생각....
그 다음은 하던데로 map()과 forEach()를 잘 조합해 쓰면 무난히 풀리는 문제이지만 아직까지 map()과 forEach()를 구별해 쓰는게 자연스럽지 않았다. 이 부분에서 좀 더 확실히 개념정립할 필요성을 느꼈다.