🧠 문제 요약
- 세준이가 점수를 조작하는 문제로, 모든 점수를 최댓값으로 나누고 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 연산자(...) 사용 필수!!!
- 요구사항 항상 잘 파악하자.....
- 기본에 충실한 코드가 이해하기 쉽고 안전하다!! 킵고잉!!
반응형
'Study > Coding Test' 카테고리의 다른 글
[baekjoon] 단어 정렬(JavaScript) (5) | 2025.08.16 |
---|---|
[baekjoon] 이항계수1(JavaScript) (2) | 2025.08.15 |
[beakjoon] 팰린드롬수(JavaScript) (4) | 2025.08.13 |
[beakjoon] 웰컴 키트(JavaScript) (3) | 2025.08.12 |
[beakjoon] 직각삼각형(JavaScript) (2) | 2025.08.11 |