[JS] 백준. 1546 평균

n-u·2022년 7월 12일
0

Algorithm

목록 보기
23/33
post-thumbnail

백준. 1546 평균

https://www.acmicpc.net/problem/1546

제출한 풀이

let input = fs.readFileSync(file).toString().split('\r\n');
let score = input[1].split(' ').map((i) => +i);

// 1. 최대값 M 을 구한다.
// 2. 최대값의 인덱스를 구해서 filter를 사용해 나머지 값들에게( 점수 / M * 100)해준다.

function changScore(score){
    const M = Math.max(...score);
    let sum = 0;
    for(let i = 0; i < input[0]; i++){
        sum += score[i] / M * 100;
    }
    console.log(sum /input[0]);
}
changScore(score);
  • 최대값 구하는 것은 Math.max()메서드를 이용하여 구했다.
    • Math.max()메서드의 인자로 배열을 그대로 넣을 수 없다.
    • 따라서 spread 문법을 이용해 배열의 요소를 넣어 최대값을 구할 수 있다.
  • 문제에 따라 각 점수을 계산해야 하기 때문에 for문을 이용해 각 점수에 접근 후 sum변수에 값을 더해주었다.

문제를 풀면서 알게 된 것

  • 문제를 제대로 읽고 이해 할 것!
    • 제대로 이해 못해서 이상하게 문제풀지 말자
  • Math.max(...score)에 배열의 요소를 넣는 방법
    • Math.max(score) 통째로 넣었는데 에러가 나서 문제를 풀 수 없었는데 배열을 넣는 방법이 따로 있다는 것을 이번에 알 수 있었다.
  • for문을 적극적으로 사용해 볼 것



Reference

https://gurtn.tistory.com/53

profile
기록하며 발전하는 삶

0개의 댓글