[해커랭크] Recursive Digit Sum

Kim Yuhyeon·2023년 10월 24일
0

알고리즘 + 자료구조

목록 보기
149/161

문제

https://www.hackerrank.com/challenges/one-week-preparation-kit-recursive-digit-sum/problem?isFullScreen=true&h_l=interview&playlist_slugs%5B%5D=preparation-kits&playlist_slugs%5B%5D=one-week-preparation-kit&playlist_slugs%5B%5D=one-week-day-four

n문자열을 k번 반복한 문자열이 있다.
(n = "9875", k = 4 => "9875987598759875"
각 자릿수의 합이 1자리수가 될때까지 반복한다.

접근 방법

  1. 처음 n의 각 자리수 합을 구한 후 k를 곱해준다.
  2. n의 자리수가 1자리수가 나올때까지 반복한다.

풀이

int superDigit(string n, int k) {
    
    long long sum = 0;
    for(char ch : n)
    {
        sum += (ch - '0');
    }
    sum *= k;
    n = to_string(sum);
    
    while(n.length() > 1) 
    {
        sum = 0;
        for(char ch : n)
        {
            sum += (ch - '0');
        }

        n = to_string(sum);
    }
    
    return stoll(n);   
}

정리

문제를 이해 못해서 찾아봤다. 문자열 최대 길이를 보고 타입을 잘 쓰자.

0개의 댓글