숫자 루트
양의 정수의 자릿수 근은 모든 자릿수의 합으로 정의됩니다.
정수 배열을 취하는 JavaScript 함수를 작성해야 합니다. 함수는 a가 b보다 앞에 오면 a의 자릿수 근이 b의 자릿수 근보다 작거나 같도록 정렬해야 합니다. 두 숫자의 자릿수 근이 같으면 작은 숫자(일반적인 의미에서)가 먼저 와야 합니다.
예를 들어, 4와 13은 동일한 자릿수 루트를 갖지만 4 <13이므로 둘 다 있는 모든 digitRoot 정렬에서 4가 13 앞에 옵니다.
예를 들어 -
입력 배열이 -
인 경우const arr = [13, 20, 7, 4];
그러면 출력은 다음과 같아야 합니다. -
const output = [20, 4, 13, 7];
예시
const arr = [13, 20, 7, 4];
const digitSum = (num, sum = 0) => {
if(num){
return digitSum(Math.floor(num / 10), sum + (num % 10));
};
return sum;
};
const digitalSort = (arr = []) => {
const sorter = (a, b) => {
return (digitSum(a) - digitSum(b)) || (a - b);
};
arr.sort(sorter);
};
digitalSort(arr);
console.log(arr); 출력
이것은 다음과 같은 출력을 생성합니다 -
[ 20, 4, 13, 7 ]