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

JavaScript로 범위 내 숫자들의 세제곱 합 구하기

문제 소개

이번 글에서는 두 개의 숫자로 이루어진 범위 배열을 인자로 받아, 해당 범위에 속한 모든 숫자의 세제곱 값을 합산하여 반환하는 JavaScript 함수를 작성해 보겠습니다.

예를 들어 범위가 [4, 11]이라면, 4부터 11까지 각 숫자를 세제곱한 뒤(4³ + 5³ + ... + 11³) 그 전체 합계를 구해야 합니다.

예제 코드

다음은 문제를 해결하는 JavaScript 코드입니다 −

const range = [4, 11];
const sumCubes = ([l, h]) => {
    const findCube = num => num * num * num;
    let sum = 0;
    for(let i = l; i <= h; i++){
        sum += findCube(i);
    };
    return sum;
};
console.log(sumCubes(range));

출력 결과

4320

코드 동작 원리

코드가 어떻게 작동하는지 단계별로 살펴보겠습니다.

1. 매개변수 구조 분해 할당

화살표 함수의 매개변수 자리에서 ([l, h])와 같이 배열 구조 분해 할당을 사용하여, 범위 배열의 첫 번째 요소는 하한값 l, 두 번째 요소는 상한값 h로 바로 추출합니다.

2. 세제곱 계산 헬퍼 함수

findCube는 전달받은 숫자를 세 번 곱하여 세제곱 값을 반환하는 간단한 화살표 함수입니다.

3. 반복문을 통한 누적 합산

for 루프가 하한값 l부터 상한값 h까지 순차적으로 순회하며, 각 숫자의 세제곱을 sum 변수에 더합니다. 마지막으로 누적된 합계를 반환합니다.

대안: reduce 메서드 활용하기

반복문 대신 배열과 reduce 메서드를 사용하면 더 선언적인 스타일로 같은 결과를 얻을 수 있습니다.

const sumCubesReduce = ([l, h]) => {
    const nums = Array.from({ length: h - l + 1 }, (_, i) => l + i);
    return nums.reduce((acc, num) => acc + num ** 3, 0);
};
console.log(sumCubesReduce([4, 11])); // 4320

Array.from으로 범위 내 숫자들을 담은 배열을 생성한 뒤, reduce와 거듭제곱 연산자(**)를 조합해 세제곱의 합을 깔끔하게 계산할 수 있습니다.