HackerRank | Recursion - Recursive Digit Sum

4177 단어 hackerrankhackerrank

문제

https://www.hackerrank.com/challenges/recursive-digit-sum/problem?h_r=internal-search
처음 주어진 문자열을 k번 연결하여 생성된 숫자가 한 자리 숫자가 될 때까지 각 자릿수를 더한다. Super Digit은 다음과 같이 계산된다.

문제 풀이

  • 문자열이 1이면 리턴한다. (종결조건)

  • 각 문자열의 숫자를 합하고 k번 곱해준다.

  • 문자열의 길이가 1이 될 때까지 각 문자열을 더해 super digit을 구한다.

코드

int superDigit(char* n, int k) {
    int len = strlen(n);
    long long int sum = 0;
    if(len==1) return *n-'0';
    else
    {
       for(int i=0; i<len; i++)
            sum += n[i]-'0';
        sum *= k;
        char *str = malloc(sizeof(char)*(len+1));
        sprintf(str, "%lld", sum);   // %d를 지정하여 정수를 문자열로 저장
        return superDigit(str, 1);
    }
}

결과

좋은 웹페이지 즐겨찾기