출처
백준 온라인 저지
1546번: 평균
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보
www.acmicpc.net
문제
세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.
풀이
먼저 Math.max 메서드를 사용하여 Max 값을 구해줍니다.
split 메서드로 나눠서 구해준 점수 케이스를 가지고, for문을 돌려 각 점수마다 ( 점수 / max * 100 ) 수식을 사용하여 새로운 점수를 구해 준 후 해당 값을 계속 누적시켜줍니다.
해당 값은 새로 구한 점수의 총합 점수가 되며 그 수를 과목의 개수 만큼 나눠주면 새로운 평균이 됩니다.
코드
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
const num = input[0] * 1;
const score = input[1].split(" ");
const max = Math.max(...score);
let sum = 0;
for (let i = 0; i < num; i++) {
sum += score[i] / max * 100;
}
console.log(sum / num);