본문 바로가기
코테연습

21.Sum of Digits / Digital Root

by hxunz 2022. 3. 31.

Description:

Digital root is the recursive sum of all the digits in a number.

Given n, take the sum of the digits of n. If that value has more than one digit, continue reducing in this way until a single-digit number is produced. The input will be a non-negative integer.

Examples

    16  -->  1 + 6 = 7
   942  -->  9 + 4 + 2 = 15  -->  1 + 5 = 6
132189  -->  1 + 3 + 2 + 1 + 8 + 9 = 24  -->  2 + 4 = 6
493193  -->  4 + 9 + 3 + 1 + 9 + 3 = 29  -->  2 + 9 = 11  -->  1 + 1 = 2

 

 

function digital_root(n) {
  let sum = 0;
  n.toString().split('').map(str => {
    sum += Number(str);
  });
  return (sum < 10) ? sum : digital_root(sum);
}

숫자들을 다 더해서 집어넣기 위해 sum에 0을 할당해뒀다. 

let sum = 0;
 

그 다음에 주어진 숫자 n을 쪼개어 배열에 넣어주는데 map을 사용하기 위해서  string으로 변경했다.

n.toString().split('')

 

이 배열 내 element 들을 하나씩 더해서 sum에 넣어줬다. 

.map(str => {
sum += Number(str);
});
 

만약에  sum이 10 미만이면 그대로 sum을 return해주고 10 이상이면 다시 처음부터 이 루트를 실행하기 위해서 digital_root(sum)을 해줬다. 

return (sum < 10) ? sum : digital_root(sum);

'코테연습' 카테고리의 다른 글

23.Who likes it?  (0) 2022.04.01
22.Array.diff  (0) 2022.03.31
20.Stop gninnipS My sdroW!  (0) 2022.03.30
19.Find the odd int  (0) 2022.03.29
18.Multiples of 3 or 5  (0) 2022.03.29

댓글