JavaScript에서 숫자를 개별 자릿수로 분리하고 각 자릿수의 합을 구하는 방법을 알아보겠습니다. 가장 대표적인 방법은 나머지 연산자(%)와 Math.floor() 함수를 활용하는 것입니다.
나머지 연산자를 이용한 자릿수 분리
숫자를 10으로 나눈 나머지(% 10)를 구하면 마지막 자릿수를 얻을 수 있고, Math.floor()로 10을 나누면 마지막 자릿수가 제거됩니다. 이 과정을 숫자가 0이 될 때까지 반복하면 모든 자릿수를 하나씩 추출할 수 있습니다.
예제 코드
<!DOCTYPE html>
<html>
<body>
<script>
var a = 28573;
var sum = 0;
while(a > 0) {
sum += a % 10;
a = Math.floor(a / 10);
}
document.write("Sum of digits = " + sum);
</script>
</body>
</html>실행 결과
Sum of digits = 25
코드 동작 원리
위 예제의 동작 과정을 단계별로 살펴보면 다음과 같습니다.
1단계: 28573 % 10 = 3 → sum = 3, 그리고 28573을 10으로 나누어 2857이 됩니다.
2단계: 2857 % 10 = 7 → sum = 10, 그리고 285가 됩니다.
3단계: 285 % 10 = 5 → sum = 15, 그리고 28이 됩니다.
4단계: 28 % 10 = 8 → sum = 23, 그리고 2가 됩니다.
5단계: 2 % 10 = 2 → sum = 25, 그리고 0이 되어 반복이 종료됩니다.
최종적으로 각 자릿수(2 + 8 + 5 + 7 + 3)의 합인 25가 출력됩니다.
문자열 변환을 활용한 대체 방법
숫자를 문자열로 변환한 후 split() 메서드를 사용하면 더 직관적으로 자릿수 배열을 얻을 수 있습니다.
var num = 28573;
var digits = String(num).split('').map(Number);
console.log(digits); // [2, 8, 5, 7, 3]
// 자릿수의 합 구하기
var sum = digits.reduce((acc, cur) => acc + cur, 0);
console.log(sum); // 25두 방법 모두 널리 사용되며, 나머지 연산자 방식은 수학적 접근에 적합하고, 문자열 변환 방식은 각 자릿수를 배열로 다루어야 할 때 유용합니다. 상황에 맞게 선택하여 사용하시기 바랍니다.