Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 범위 내 모든 숫자의 합 구하는 방법

이 글에서는 JavaScript를 사용하여 주어진 범위 안에 있는 모든 자연수의 합을 구하는 방법을 알아보겠습니다.

문제 정의

숫자 두 개로 이루어진 배열을 입력받아, 그 배열이 나타내는 범위 내에 속한 모든 자연수의 합을 계산하는 함수를 작성해야 합니다. 이때 범위의 시작 숫자와 끝 숫자 자체도 합산에 포함되어야 합니다.

예를 들어, 입력 배열이 [4, 67]이라면 함수는 4부터 67까지의 모든 자연수를 더한 값을 반환해야 합니다.

해결 방법 1: 반복문 활용

가장 직관적인 방법은 반복문을 사용하는 것입니다. 범위의 시작 값부터 끝 값까지 하나씩 순회하면서 각 숫자를 누적하면 됩니다.

const range = [4, 67];
const findSum = ([l, h]) => {
    let sum = 0;
    for(let i = l; i <= h; i++){
        sum += i;
    };
    return sum;
};
console.log(findSum(range));

코드 설명

findSum 함수는 구조 분해 할당(destructuring)을 통해 배열에서 최솟값 l과 최댓값 h를 추출합니다. 이후 for 반복문으로 l부터 h까지의 모든 정수를 순회하며 sum 변수에 더해줍니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

2272

해결 방법 2: 등차수열 공식 활용 (효율적인 대안)

반복문은 범위가 커질수록 실행 시간이 길어집니다. 반면 등차수열의 합 공식을 사용하면 O(1)의 시간 복잡도로 즉시 결과를 얻을 수 있습니다.

공식은 다음과 같습니다: 합 = (첫째 항 + 마지막 항) × 항의 개수 ÷ 2

const findSumFast = ([l, h]) => {
    return ((l + h) * (h - l + 1)) / 2;
};
console.log(findSumFast([4, 67])); // 2272

두 방법 모두 동일한 결과인 2272를 반환하지만, 매우 큰 범위를 다룰 때는 수학 공식을 활용한 방법이 훨씬 효율적입니다.