두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
두 정수사이의 길이 len
를 구하고 반복문을 통해 그 길이만큼 순회하여 배열 arr
에 담았다. 길이가 음수가 나올 수 있기 때문에 절대값을 이용했다. 반복문이 끝나고 배열의 각 요소의 합을 계산해서 리턴했다.
solution 1
의 경우 단순 반복문을 통해 계산해준 결과이다. solution 2
는 등차수열의 합 공식을 이용한 방법으로 훨씬 간단하게 문제를 해결할 수 있었다.
등차수열의 합
등차수열의 제 n항부터 제 m항까지의 합을 S, 제 n항이 a, 제 m항이 b 일 때 수식은 다음과 같다.
// solution 1
function solution(a, b) {
let arr = [];
const len = Math.abs(a - b) + 1;
for (let i = 0; i < len; i++) {
if (a === b) {
arr.push(a);
}
if (a < b) {
arr.push(a);
a++;
}
if (a > b) {
arr.push(b);
b++;
}
}
const answer = arr.reduce((a, b) => a + b, 0);
return answer;
}
// solution 2
function solution(a, b) {
return ((a + b) * (Math.abs(a - b) + 1)) / 2;
}
solution(3, 5); // 12
solution(-10, 1); // -54