findDifference.js (8kyu 93)

Codewars 알고리즘 풀이


Problem

  • You must find the difference of the cuboids’ volumes regardless of which is bigger.
    • 어느 것이 더 큰지에 관계없이, 직육면체(cuboid)의 용량(volume) 차이를 반환한다.


Solution 01

function findDifference(arr1, arr2) {
  let result1 = arr1[0];
  let result2 = arr2[0];
  
  for (let i = 1; i < arr1.length; i++) {
    result1 *= arr1[i];
  }
  
  for (let i = 1; i < arr2.length; i++) {
    result2 *= arr2[i];
  }
  
  return Math.abs(result1 - result2);
}

findDifference([], []);  // 7 (8 - 1)
findDifference([], []);  // 2 (8 - 6)
findDifference([], []);  // 19 (27 - 8)

Math.abs() 메소드

주어진 숫자의 절대값(absolute value)을 반환한다.


Solution 02

function findDifference(arr1, arr2) {
  let result1 = arr1.reduce((total, i) => total * i);
  let result2 = arr2.reduce((total, i) => total * i);
  
  return Math.abs(result1 - result2);
}

findDifference([], []);  // 7 (8 - 1)
findDifference([], []);  // 2 (8 - 6)
findDifference([], []);  // 19 (27 - 8)

reduce() 메소드

배열을 하나의 값으로 줄이고, 그 값을 반환한다.