본문 바로가기
배움 기록/코테 연습

[알고리즘] 백준 1546번 : JavaScript(Node.js) 풀기

by dygreen 2023. 10. 4.

📌 문제

 

📌 풀이

const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');

const score = input[1].split(' ').map(Number);
const max = Math.max(...score);
const newArr = score.map(x => x / max * 100);

let num = 0;
for (let i = 0; i < newArr.length; i++) {
    num += newArr[i]
}
const average = num / newArr.length;

console.log(average);
  • Math.max() : 원래 점수 중에 최댓값을 찾는다
  • map 반복문으로 모든 점수를 '점수/최댓값*100' 으로 바꾸어 새로운 배열로 만든다
  • for 반복문으로 새로운 배열 안의 값들을 모두 더한 후, 새로운 배열의 length 만큼 나누어 평균을 출력한다

 

.reduce() 를 활용한 풀이법

const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');

const score = input[1].split(' ').map(Number);
const max = Math.max(...score);
const newArr = score.map(x => x / max * 100);

const num = newArr.reduce((prev, curr) => prev + curr);
const average = num / newArr.length;

console.log(average);
  • 위 풀이에서 새로운 배열 안의 값들을 모두 더하기 위해 for 반복문을 이용했다면,
    .reduce() 를 이용해 누적된 값을 더해 출력할 수 있다
728x90

댓글