한 숫자로 변환될 때까지 숫자를 반복적으로 합산하는 JavaScript 함수를 작성해야 합니다.
우리는 두 가지 방법으로 이 문제를 해결할 것입니다 -
방법 1:루프 사용
이 솔루션은 while 루프를 사용하여 숫자의 자릿수를 재귀적으로 더합니다.
예시
const num = 123456; const addDigits = (num = 1) => { let sum = num; while(sum % 10 !== sum){ let sum1 = 0; while(sum > 0){ sum1 += sum % 10; sum = Math.floor(sum / 10); } sum = sum1; }; return sum; }; console.log(addDigits(num));
방법 2:일정 시간 솔루션 사용(O(1) 시간 복잡도)
이 솔루션은 수학의 합동 공식을 사용하며 독자는 이 솔루션을 더 잘 이해하기 위해 이 공식을 탐색하는 것이 좋습니다.
예시
const num = 123456; const addDigits = (num = 1) => { let predicate = (num - 1) % 9; return ++predicate; }; console.log(addDigits(num));
출력
그리고 두 방법 모두에 대한 콘솔의 출력은 -
3