본문 바로가기

HackerRank

[해커랭크] (Implementation Algorithms) Grading Students (javascript)

학생 등급 채점

규칙 

  • 학생이 받는 등급범위는 0~100
  • 등급이 40보다 작은 경우 낙제
  • 입력된 등급의 다음 5배수 값을 구하여, 그 차가 3보다 작을 경우 5배수값으로 등급 조정
  • 등급이 38보다 작은 경우 반올림하지 않음 (계산해도 낙제이기 때문)

 

제한사항

  • 1 ≤ n ≤ 60
  • 0 ≤ grades[i] ≤ 100

 

나의 풀이

  • 등급이 38보다 작은 경우 자체 점수 반환
  • 5배수 구하기 
    •  Math.ceil({val}/5)*5;
      • 5로 나눈 정수값 * 5 ( 반올림 - round,  올림 - ceil, 버림 - floor)
  • 5배수와 기존 등급의 차가 3보다 작을 경우, 5배수값으로 등급 조정
  • 아닌 경우 자체 점수 반환
// 생략

/*
 * Complete the 'gradingStudents' function below.
 *
 * The function is expected to return an INTEGER_ARRAY.
 * The function accepts INTEGER_ARRAY grades as parameter.
 */

function gradingStudents(grades) {
    // Write your code here
    const final = grades.map(g => {
      let grade = g;
      
      if (grade >= 38) {
        const multiple = Math.ceil(g/5)*5;
        const diff = multiple - g;
        
        if (diff < 3) {
          grade = multiple;
        }
      }
      
      return grade;
    });

  return final;
}

// ..후략

결과