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

JavaScript에서 1부터 n까지 자연수의 합 구하기 — 가우스 공식 활용법

JavaScript에서 숫자 하나를 매개변수로 받는 함수를 작성해야 한다고 가정해 봅시다. 이 함수는 1부터 입력값 num까지의 모든 자연수의 합을 반환해야 하며, 1과 num 자체도 합산에 포함되어야 합니다.

예를 들어, num이 다음과 같다면 −

const num = 5;

함수의 출력 결과는 다음과 같아야 합니다 −

const output = 15;

그 이유는 다음과 같습니다 −

1+2+3+4+5 = 15

반복문 대신 수학 공식 사용하기

이 문제는 for문이나 while문으로 1부터 num까지 차례대로 더하는 방식으로도 해결할 수 있지만, 그 경우 시간 복잡도가 O(n)이 되어 입력값이 커질수록 성능이 떨어집니다. 대신 잘 알려진 가우스 공식을 활용하면 단 한 번의 연산, 즉 O(1)의 시간 복잡도로 결과를 얻을 수 있습니다.

1부터 n까지의 자연수의 합 공식은 다음과 같습니다 −

n * (n + 1) / 2

예제 코드

위 공식을 적용한 코드는 다음과 같습니다 −

const num = 5;
const sumUpto = num => {
   const res = (num * (num + 1)) / 2;
   return res;
};
console.log(sumUpto(num));
console.log(sumUpto(7));
console.log(sumUpto(45));
console.log(sumUpto(2));
console.log(sumUpto(8));
console.log(sumUpto(99));

출력 결과

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

15
28
1035
3
36
4950

정리

화살표 함수(arrow function)와 가우스 공식만 있으면 반복문 없이도 간결하고 빠르게 1부터 n까지의 자연수 합을 계산할 수 있습니다. 특히 큰 숫자를 다룰 때 성능상 이점이 크므로, 실무에서도 반복 합계 문제에는 이 공식을 우선적으로 고려하는 것이 좋습니다.