Aracade Intro #41 digitDegree. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar
Q.
Let's define digit degree of some positive integer as the number of times we need to replace this number with the sum of its digits until we get to a one digit number.
Given an integer, find its digit degree.
양의 정수의 자릿수를 찾아보는데, 한자리 숫자가 나올 때까지 각 자리 수들의 합을 구하는 동작을 반복한다.
주어진 정수에서, 최종 한자리 숫자가 남을 때까지의 횟수를 구하라
e.g.
Input -> n = 5
Output -> digitDegree(n) = 0
- 5가 시작부터 한자리 수라서 바로 끝 ( 0번 )
- 5 is just single digit, so it's end ( count 0 )
Input -> n = 100
Output -> digitDegree(n) = 1
1 + 0 + 0 = 1
- 최초 3자리, 각 자리수 더한 값이 한자리수 ( 1번)
- 100 has 3 digits, sum of all digit is single digit 1. ( count 1 )
Input -> n = 91
Output -> digitDegree(n) = 2
9 + 1 = 10 -> 1 + 0 = 1
- 최초 2자리, 각 자리수 합이 10으로 두자리. 다시 각 자리수 합이 1 한자리. ( 2번)
- 2 digits initially, sum of digits is 2 digit again. Get sum of digits again, and it's single digit. ( count 2 )
// Process
// 1. Input int n
// 2. Get digitSum
// 3. Check if it's singleDigit
// 3.1. If not - recursive with count
// 4. Return count
//
//처리과정
//1. 정수를 입력받는다.
//2. 자릿수 합을 구한다.
//3. 합이 한자리 수인지 확인해서
// 3.1. 아니면 다시 자릿수 합을 구한다 (재귀)
//4. 최종 합이 나올때까지의 횟수를 출력한다.
Code.. Lemme see code!!!!!
코드.. 코드를 보자!!!!!
int digitDegree(int n) {
int digitSum = 0;
int count = 0;
if (n >= 10)
{
++count;
}
while (n > 0)
{
digitSum += n % 10;
n /= 10;
}
if (digitSum >= 10)
{
digitDegree_Recursive(digitSum, &count);
}
return count;
}
int digitDegree_Recursive(int n, int *count) {
int digitSum = 0;
++(*count);
while (n > 0)
{
digitSum += n%10;
n /= 10;
}
if (digitSum >= 10)
{
digitDegree_Recursive(digitSum, count);
}
return *count;
}
Something else you might like..
2018/11/29 - [Life/Health care] - L-Arginine 아르기닌 usage/side effects/dosage 효능/부작용/성인,소아 용법
2018/12/02 - [Life/Health care] - Maca 마카 usage/side effects/dosage 효능/부작용/용법
2018/12/03 - [Life/Health care] - Lecithin 레시틴 usage/side effects/dosage 효능/부작용/용법
2018/12/04 - [Life/Health care] - Magnesium 마그네슘 usage/side effects/dosage 용법/효능/부작용