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

JavaScript로 구현하는 '제곱의 합'과 '합의 제곱'의 차이 계산 방법

자연수 n 하나만을 입력으로 받아 다음 작업을 수행하는 JavaScript 함수를 작성해야 합니다.

  • 처음 n개의 자연수에 대한 제곱의 합(sum of squares)을 계산합니다.
  • 처음 n개의 자연수의 합의 제곱(square of sums)을 계산합니다.
  • 두 값의 절댓값 차이를 반환합니다.

예시로 살펴보기

n = 5라고 가정해 보겠습니다.

제곱의 합 = 1² + 2² + 3² + 4² + 5² = 1 + 4 + 9 + 16 + 25 = 55
합의 제곱 = (1 + 2 + 3 + 4 + 5)² = 15 × 15 = 225

따라서 최종 출력은 225 − 55 = 170이 됩니다.

구현 코드

이 문제를 해결하는 코드는 다음과 같습니다.

const squareDifference = (num = 1) => {
    let x = 0;
    let y = 0;
    let i = 0;
    let j = 0;
    // 제곱의 합을 계산하는 함수
    (function sumOfSquares() {
        while (i <= num) {
            x += Math.pow(i, 2);
            i++;
        }
        return x;
    }());
    // 합의 제곱을 계산하는 함수
    (function squareOfSums() {
        while (j <= num) {
            y += j;
            j++;
        }
        y = Math.pow(y, 2);
        return y;
    }());
    // 두 값의 절댓값 차이를 반환
    return Math.abs(y - x);
};
console.log(squareDifference(1));
console.log(squareDifference(5));
console.log(squareDifference(10));
console.log(squareDifference(15));

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

0
170
2640
13160

참고: 수학 공식으로 더 빠르게 계산하기

위 코드는 반복문을 사용해 O(n)의 시간 복잡도를 가지지만, 잘 알려진 수학 공식을 활용하면 반복 없이 O(1)로 즉시 계산할 수 있습니다.

  • 1부터 n까지의 합: n(n+1) / 2
  • 1부터 n까지 제곱의 합: n(n+1)(2n+1) / 6

이 공식들을 적용하면 n의 값이 매우 커지더라도 성능 저하 없이 동일한 결과를 얻을 수 있으므로, 실무나 코딩 테스트에서는 공식 기반 구현을 권장합니다.