sumDigits.js (7kyu 49)

Codewars 알고리즘 풀이


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(): 배열을 하나의 값으로 줄이고, 그 값을 반환한다.