문제

  • 어느 것이 더 큰지에 관계없이, 직육면체(cuboid)의 용량(volume) 차이를 반환한다.

풀이 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([1, 1, 1], [2, 2, 2]);  // 7  (8 - 1)
findDifference([1, 2, 3], [2, 2, 2]);  // 2  (8 - 6)
findDifference([2, 2, 2], [3, 3, 3]);  // 19 (27 - 8)
  • Math.abs(): 주어진 숫자의 절대값(absolute value)을 반환한다.

풀이 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([1, 1, 1], [2, 2, 2]);  // 7  (8 - 1)
findDifference([1, 2, 3], [2, 2, 2]);  // 2  (8 - 6)
findDifference([2, 2, 2], [3, 3, 3]);  // 19 (27 - 8)
  • reduce(): 배열을 하나의 값으로 줄이고, 그 값을 반환한다.