문제 소개
이번 글에서는 JavaScript로 숫자 n을 입력받아, 1부터 n까지의 모든 자연수의 합을 반환하는 함수를 작성하는 방법을 알아보겠습니다. 여기서 말하는 합에는 시작 값인 1과 마지막 값인 n 모두 포함됩니다.
예를 들어 n이 34라면, 함수는 1 + 2 + 3 + ... + 34의 결과인 595를 반환해야 합니다.
해결 방법: 반복문 활용
가장 직관적인 방법은 for 반복문을 사용하는 것입니다. 누적 변수를 하나 선언한 뒤, 1부터 n까지 차례대로 더해가면 됩니다.
다음은 실제 동작하는 코드입니다.
const num = 34;
const summation = (num = 1) => {
let res = 0;
for (let i = 1; i <= num; i++) {
res += i;
}
return res;
};
console.log(summation(num));
실행 결과
위 코드를 실행하면 콘솔에 다음과 같은 출력이 나타납니다.
595
코드 설명
- 매개변수 기본값: 화살표 함수에서
num = 1처럼 기본 매개변수를 설정하여, 인자가 전달되지 않을 경우 오류 없이 동작하도록 했습니다. - 누적 변수:
res변수를 0으로 초기화하고, 반복문 안에서 각 숫자를 더해 나갑니다. - 반복 범위: 조건식
i <= num덕분에 n 자신도 합산에 포함됩니다.
추가 팁: 수학 공식으로 더 빠르게
반복문 대신 등차수열의 합 공식 n × (n + 1) / 2를 활용하면 코드를 한 줄로 줄일 수 있고, 성능 면에서도 O(1)로 훨씬 효율적입니다.
const summation = (num = 1) => num * (num + 1) / 2;
n이 매우 큰 경우에도 반복문 없이 즉시 결과를 얻을 수 있으므로, 실무에서는 이 공식을 사용하는 것이 좋습니다.