본문 바로가기

Study/Coding Test

[beakjoon] 평균(JavaScript)

📘 오늘의 코딩테스트 - 평균(JavaScript)

🔢 문제 번호: 1546

🔗 문제 링크: 백준 - 평균

 

 

 

 

🧠 문제 요약

  • 세준이가 점수를 조작하는 문제로, 모든 점수를 최댓값으로 나누고 100을 곱해서 새로운 평균을 구하는 문제
  • 각 점수를 점수/M*100 공식으로 변환한 후 새로운 평균을 계산
    • 입력: N(과목 개수), N개의 점수들
    • 출력: 새로운 평균 (오차 허용 10^-2)

 

 

 

✅ 실행 예시 및 결과

입력:
3
40 80 60

출력:
75.0

 

 

 

✍️ 내 풀이

  • Math.max()spread 연산자로 최댓값 찾기
  • for문으로 각 점수를 변환하면서 합계 누적
  • 마지막에 평균 계산하여 출력

 

 

 

💻 내가 푼 코드

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

const N = parseInt(input[0]);
const score = input[1].split(' ').map(Number);
const bestScore = Math.max(...score);

let sum = 0;
for(let i = 0; i < score.length; i++) {
    const newScore = score[i] / bestScore * 100;
    sum += newScore;
}

console.log(sum / N);

 

 

 

📎 남이 푼 코드

const [n, ...scores] = require('fs').readFileSync('/dev/stdin').toString().split(/\s+/).map(Number);
const max = Math.max(...scores);
console.log(scores.reduce((sum, score) => sum + score / max * 100, 0) / n);
  • 구조분해할당으로 입력 처리를 한 줄로 처리
  • reduce()를 사용해 합계와 평균을 한 번에 계산
  • 정규표현식 /\s+/로 모든 공백 문자 처리
  • 함수형 프로그래밍 스타일로 더 간결하게 작성
  • 가독성은 떨어질 수 있음

 

 

 

🔍 회고 & 배운 점

  • Math.ma()에는 spread 연산자(...) 사용 필수!!!
  • 요구사항 항상 잘 파악하자.....
  • 기본에 충실한 코드가 이해하기 쉽고 안전하다!! 킵고잉!!
반응형