티스토리 뷰

반응형
 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

// 1.
const fs = require('fs');
const [ , ...rest ] = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const cases = rest.map(line => { return line.split(' ')});

// 2.
function make_round(case_arr) {
  const [ students, ...points ] = case_arr;
  const sum = points.reduce((acc, curr) => acc + curr);
  const avg = sum / students;

  let over_avg = points.filter(point => avg < point).length;
  return ((over_avg / students) * 100).toFixed(3).toString() + '%';
}

// 3.
cases.forEach(each_case => {
  console.log(
    make_round( each_case.map( num => parseInt(num) ) )
  );
});
  1.  입력 받은 값 중 첫 번째 줄을 제외하고 두번째 줄(각 테스트 케이스)부터 rest 배열에 초기화한다.
    초기화된 rest 배열은 모든 테스트 케이스를 문자열로 갖고 있으므로, map 메소드를 통해 이를 다시 배열로 바꾸어준다.
    결과 cases는 모든 테스트 케이스를 각각 배열로 포함하는 2차원 배열이 된다.
  2. make_round 함수는 배열을 매개 변수로 받아 학생의 수와 학생의 점수들로 나누고, 이를 토대로 평균을 넘는 학생 비율을 반환한다.
    학생들의 점수 합은 reduce를 통해 구하고, 이를 통해 평균 값인 avg를 구한 후 filter 메소드를 통해 평균을 넘는 학생을 구해주었다.
  3. 이차원 배열을 순회하며, 각 테스트 케이스를 2.에서 작성한 make_round 함수에 전달한 후 반환받은 결과를 출력한다.

결과

9396 KB / 192 ms

댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함