Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 성적표 챌린지: 세 점수의 평균으로 학점 계산하기

문제 소개

이번 챌린지에서는 전달받은 세 개의 점수에 대한 평균을 구하고, 그 평균값에 해당하는 학점 문자를 반환하는 함수를 작성해야 합니다.

학점 기준표는 다음과 같습니다.

  • A: 90점 이상 ~ 100점 이하
  • B: 80점 이상 ~ 90점 미만
  • C: 70점 이상 ~ 80점 미만
  • D: 60점 이상 ~ 70점 미만
  • F: 60점 미만

예제 코드

아래 코드는 나머지 매개변수(rest parameter)를 사용해 여러 개의 점수를 한 번에 받아 평균을 계산한 후, 조건문으로 학점을 판별합니다.

const findGrade = (...scores) => {
   const { length } = scores;
   const sum = scores.reduce((acc, val) => acc + val);
   const score = sum / length;
   if (score >= 90 && score <= 100) {
      return 'A';
   } else if (score >= 80) {
      return 'B';
   } else if (score >= 70) {
      return 'C';
   } else if (score >= 60) {
      return 'D';
   } else {
      return 'F';
   }
}
console.log(findGrade(5, 40, 93));
console.log(findGrade(30, 85, 96));
console.log(findGrade(92, 70, 40));

코드 동작 방식

  1. 나머지 매개변수(...scores)를 통해 함수에 전달된 모든 점수를 하나의 배열로 수집합니다.
  2. reduce() 메서드로 점수의 합계를 구한 뒤, 배열의 길이로 나누어 평균 점수를 계산합니다.
  3. if ~ else if 조건문으로 평균 점수가 속하는 구간을 순차적으로 확인하고, 대응하는 학점 문자를 반환합니다.

실행 결과

콘솔 출력 결과는 다음과 같습니다.

F
C
D

결과 해석

  • findGrade(5, 40, 93) → (5 + 40 + 93) ÷ 3 = 46점, 따라서 F
  • findGrade(30, 85, 96) → (30 + 85 + 96) ÷ 3 ≈ 70.33점, 따라서 C
  • findGrade(92, 70, 40) → (92 + 70 + 40) ÷ 3 ≈ 67.33점, 따라서 D

이처럼 각 점수의 합을 개수로 나눈 평균값이 어느 구간에 속하는지에 따라 최종 학점이 결정됩니다. 나머지 매개변수 덕분에 점수가 세 개보다 많거나 적게 전달되더라도 동일한 로직으로 확장해 사용할 수 있다는 점도 눈여겨볼 만합니다.