Problem
- Write a function named sumDigits which takes a number as input and returns the sum of the absolute value of each of the number’s decimal digits.
Solution 01
function sumDigits(n) {
let str = Math.abs(n).toString();
let sum = 0;
for (let i = 0; i < str.length; i++) {
sum += parseInt(str[i]);
}
return sum;
}
sumDigits(10); // 1
sumDigits(11); // 2
sumDigits(12); // 3
sumDigits(44); // 8
sumDigits(-44); // 8
Math.abs()
: 주어진 숫자의 절대값(absolute value)을 반환한다.
toString()
: 숫자를 문자열로 변환한다.
parseInt()
: 문자열을 구문 분석하고, 정수를 반환한다.
Solution 02
function sumDigits(n) {
return Math.abs(n).toString().split('').reduce((sum, i) => sum + +i, 0);
}
sumDigits(10); // 1
sumDigits(11); // 2
sumDigits(12); // 3
sumDigits(44); // 8
sumDigits(-44); // 8
split()
: 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.
reduce()
: 배열을 하나의 값으로 줄이고, 그 값을 반환한다.