이번 글에서는 숫자 n을 입력받아, 처음 n개의 홀수 자연수의 제곱합을 구하는 JavaScript 함수를 작성해 보겠습니다.
예를 들어 입력값이 3이라면 다음과 같이 계산됩니다.
1² + 3² + 5² = 1 + 9 + 25 = 35
따라서 최종 출력 결과는 다음과 같습니다.
35
접근 방법
k번째 홀수 자연수는 공식 (2 × k) − 1로 표현할 수 있습니다. 즉,
- 1번째 홀수 → 2 × 1 − 1 = 1
- 2번째 홀수 → 2 × 2 − 1 = 3
- 3번째 홀수 → 2 × 3 − 1 = 5
따라서 반복문을 사용해 각 홀수를 구한 뒤 제곱하여 누적하면 원하는 결과를 얻을 수 있습니다.
코드 예제
다음은 전체 구현 코드입니다.
const num = 3;
const squaredSum = num => {
let sum = 0;
for (let i = 1; i <= num; i++) {
sum += Math.pow((2 * i) - 1, 2);
}
return sum;
};
console.log(squaredSum(num));출력 결과
콘솔에 실행하면 다음과 같은 결과가 출력됩니다.
35
수학 공식으로 한 번에 계산하기
반복문 없이도 수학 공식을 활용하면 O(1)의 시간 복잡도로 즉시 계산할 수 있습니다. 처음 n개의 홀수 자연수의 제곱합은 다음 공식으로 정리됩니다.
합 = n(2n − 1)(2n + 1) / 3
이 공식을 코드로 구현하면 다음과 같습니다.
const squaredSumFormula = num => {
return num * ((2 * num - 1) * (2 * num + 1)) / 3;
};
console.log(squaredSumFormula(3)); // 35n이 매우 큰 경우에는 반복문 방식보다 이 공식 기반 접근법이 훨씬 효율적입니다.