checkExam.js (8kyu 80)

Codewars 알고리즘 풀이


Problem

  • The first input array contains the correct answers to an exam.
    • 첫 번째 배열은 시험에 대한 올바른 정답이다.
  • The second one is “answers” array and contains student’s answers.
    • 두 번째 배열은 학생의 정답이다.
  • Return the score for this array of answers, giving +4 for each correct answer, -1 for each incorrect answer, and +0 for each blank answer.
    • 각 올바른 정답에는 +4, 올바르지 않은 정답에는 -1, 공백 정답에는 +0이 주어진다.
    • 해답 배열에 대한 점수를 반환한다.
  • If the score < 0, return 0.
    • 점수가 0보다 낮다면 0을 반환한다.


Solution 01

function checkExam(arr1, arr2) {
  let result = 0;
  
  for (let i = 0; i < arr1.length; i++) {
    if (arr[i] === arr2[i]) {
      result += 4;
    } else if (arr2[i] === '') {
      result += 0;
    } else {
      result -= 1;
    }
  }
  return result < 0 ? 0 : result;
}

checkExam(['a', 'b', 'c'], ['a', 'b', 'c']);  // 12
checkExam(['a', 'b', 'c'], ['a', 'b', 'x']);  // 7
checkExam(['a', 'b', 'c'], ['a', 'b', '']);   // 8
checkExam(['a', 'b', 'c'], ['a', '', '']);    // 4
checkExam(['a', 'b', 'c'], ['a', 'x', 'x']);  // 2
checkExam(['a', 'b', 'c'], ['', '', '']);     // 0
checkExam(['a', 'b', 'c'], ['x', 'x', 'x']);  // 0


Solution 02

function checkExam(arr1, arr2) {
  let result = 0;
  
  for (let i = 0; i < arr1.length; i++) {
    result += arr2[i] !== '' ? arr[i] === arr2[i] ? 4 : -1 : 0;
  }
  return result < 0 ? 0 : result;
}

checkExam(['a', 'b', 'c'], ['a', 'b', 'c']);  // 12
checkExam(['a', 'b', 'c'], ['a', 'b', 'x']);  // 7
checkExam(['a', 'b', 'c'], ['a', 'b', '']);   // 8
checkExam(['a', 'b', 'c'], ['a', '', '']);    // 4
checkExam(['a', 'b', 'c'], ['a', 'x', 'x']);  // 2
checkExam(['a', 'b', 'c'], ['', '', '']);     // 0
checkExam(['a', 'b', 'c'], ['x', 'x', 'x']);  // 0