📝 문제풀이/프로그래머스

[Level 1] 두 정수 사이의 합

NoHack 2022. 2. 27. 04:20
728x90

문제 설명

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

제한 조건

  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다.

문제 풀이

const solution = (a, b) => {
  // 배열 생성
  const array = Array.from({ length: Math.abs(a - b) + 1 }, (_, i) => (a < b ? a + i : a - i));
  return array.reduce((a, b) => a + b);
};

const inputs = [
  [3, 5],
  [3, 3],
  [5, 3],
];
inputs.forEach((input) => console.log(solution(...input)));

가장 먼저 두 수 사이의 값을 요소로 갖는 배열을 Array.from으로 생성합니다. 배열의 크기는 두 수를 포함해야 하므로, 두 수의 차에서 1을 더해 공간을 확보했습니다. 또한 a의 값이 b보다 큰 경우가 있을 수 있기 때문에, 이를 고려해 요소 저장 함수에서 삼항 연산을 사용했습니다. 배열을 올바르게 만든 후에는 reduce로 모든 값을 더해 반환하면 됩니다.