이번 글에서는 숫자 하나를 한계값(limit)으로 받아, 그 값 미만의 자연수 중에서 3 또는 5의 배수에 해당하는 모든 수의 합을 계산하는 JavaScript 함수를 작성해 보겠습니다.
문제 이해하기
예를 들어 한계값이 10이라면, 10 미만의 자연수 중 3 또는 5의 배수는 3, 5, 6, 9입니다.
따라서 결과는 다음과 같습니다.
3 + 5 + 6 + 9 = 23
구현 방법
가장 직관적인 접근 방식은 3부터 한계값 미만까지 반복문을 돌면서, 각 숫자가 3 또는 5로 나누어 떨어지는지 확인한 뒤 조건을 만족하면 합계에 더하는 것입니다.
예제 코드
const sumOfMultiple = (limit = 10) => {
let i, sum = 0;
for (i = 3; i < limit; i += 1) {
if (i % 3 === 0 || i % 5 === 0) {
sum += i;
};
};
return sum;
}
console.log(sumOfMultiple(1000));
console.log(sumOfMultiple(10));
console.log(sumOfMultiple(100));실행 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
233168 23 2318
코드 설명
- 기본 매개변수:
limit = 10처럼 기본값을 지정하면, 인자 없이 함수를 호출했을 때 자동으로 10이 사용됩니다. - 나머지 연산자(%):
i % 3 === 0 || i % 5 === 0조건을 통해 해당 숫자가 3 또는 5의 배수인지 판별합니다. - 반복 범위: 문제에서 '미만(below)'을 요구하므로 반복문은
i < limit까지만 실행되며, 한계값 자체는 포함되지 않습니다.
이처럼 간단한 반복문과 조건문만으로도 Project Euler의 유명한 첫 번째 문제와 같은 배수 합계 계산을 손쉽게 해결할 수 있습니다.