Miyeon

Sum All Numbers in a Range

2021-01-29Algorithm

Sum All Numbers in a Range

두 배열의 값 사이의 모든 숫자를 더한 합계를 구하시오.

예시

sumAll([1, 4]) should return 10.
sumAll([5, 10]) should return 45.
sumAll([10, 5]) should return 45.


나의 접근법

인풋 : 배열
아웃풋 : 합계 값

  • 배열의 요소를 정렬한다
  • 반복문을 통해서 값을 더해나간다.
function sumAll(arr) {
  arr.sort(function(a, b) {
    return a - b;
  });

  let sum = 0;
  for (let i = arr[0]; i <= arr[arr.length - 1]; i++) {
    sum += i;
  }
  return sum;
}

sumAll([1, 4]);

또 다른 방법

  • 배열에서 maxNum을 구한다
  • minNum을 구한다
  • 새로운 배열에 minNum과 maxNum사이의 숫자를 반복해서 추가한다.
function sumAll(arr) {
  const newArr = [];
  const maxNum = Math.max(...arr);
  const minNum = Math.min(...arr);
  newArr[0] = minNum;

  let i = 1;
  while (minNum + i < maxNum) {
    newArr.push(minNum + i);
    i++;
  }

  newArr.push(maxNum);
  let result = newArr.reduce((a, b) => a + b);
  return result;
}

sumAll([1, 4]);