[HackerRank 코딩테스트] Grading Students

이희주·2022년 9월 5일
0
post-thumbnail

보통 다른 사람들은 프로그래머스, 백준으로 코테를 많이 하는데
자바스크립트로 코테를 하는 나는 백준으로 코테를 풀 때 매번 node로 인풋값을 받아와야 하는게 너무 너무 번거로워서...!
마침 해커랭크라는 좋은 사이트를 알게되었다! 해커랭크는 사이트가 다 영어로 되어있지만.. 나에겐 파파고가 있다!

기초 단계부터 차근차근 풀어보고 있는데 조금 생각을 해야 했던 문제가 있어서 기록 해 두려고 한다

문제 설명

점수를 매길건데 일단 40점 밑으로는 다 탈락이다.
5의 배수에서 해당 점수를 뺐을 때 3점 이상 차이가 나게 되면 그냥 두고,
1~2점 차이가 나면 반올림을 해주면 된다

내가 푼 것

function gradingStudents(grades) {
  // Write your code here
  let answer = [];

  for (let i = 0; i < grades.length; i++) {
    if (grades[i] >= 38) {
      if ((grades[i] + 2) % 5 === 0) answer.push(grades[i] + 2);
      else if ((grades[i] + 1) % 5 === 0) answer.push(grades[i] + 1);
      else answer.push(grades[i]);
    } else answer.push(grades[i]);
  }
  return answer;
}

풀어보니 간단한 문제였는데 접근을 잘못해서 생각을 굉장히 많이 했다.
처음에는 각각의 값을 5의 배수에서 미리 나누고, 올림을 하고 난리를 치다가
생각해보니까 2나 1을 더한 다음 5로 나눴을때 나머지가 없으면 되는 너무 간단한...것
일단 반올림을 했을 때 40점이 안되면 과락이기 때문에
grades[i]의 값이 38 이상일 때, 1이나 2를 더한 뒤 5로 나누고 나누어 떨어지면 1과 2를 더해서 answer값에 넣어주었고
그게 아니라면 값들을 그대로 두었다.

해결!

profile
어제보다 오늘 발전하는 프론트엔드 개발자

0개의 댓글