본문으로 바로가기

Description

주어진 숫자를 자리수마다 잘라서 모두 더하는 연산을 반복 한뒤 한자리 숫자를 반환하는 문제입니다.

Solution 1. Recursion

public static int superDigit(String n, int k) {
    if(n.length() == 1 && k == 1)
        return Integer.valueOf(n);

    long sum = 0;
    for(int i=0;i<n.length();i++)
        sum += Integer.valueOf(n.substring(i,i+1));

    return superDigit(Long.toString(sum*k), 1);
}

직관적으로 재귀호출을 이용해 처리 할 수 있습니다. 각 자리수 string으로 변환해서 더한 뒤 해당 값으로 재귀 호출하며 종료 조건으로 한자리 숫자가 들어 왔을때 해당 값을 반환해줍니다.

Reference

 

Recursive Digit Sum | HackerRank

recursively sum all digits in a number until there is only one left

www.hackerrank.com

,Array ,TwoPoint,LinkedList, Depth-First Search, Breadth-First Search, Matrix, TwoPoint, Recusion,