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 |
댓글