본문 바로가기
CodeSignal

digitDegree

by Doromi 2023. 12. 30.
728x90
반응형

 어떤 양수 정수의 "digit degree(자릿수 차수)"를 찾는 문제입니다. 여기서 digit degree란 해당 수를 그 자릿수의 합으로 대체하여 한 자리 수에 도달할 때까지 몇 번이나 반복해야 하는지를 나타냅니다.

예를 들어, n = 5일 때, 이미 한 자리 수이므로 0번의 대체가 필요하므로 결과는 0입니다. n = 100일 때는 1 + 0 + 0 = 1이 되므로 1번의 대체가 필요하며, n = 91일 때는 9 + 1 = 10이 되고, 다시 1 + 0 = 1이 되므로 2번의 대체가 필요합니다.

이 문제의 목표는 어떤 수에 대해 digit degree를 찾아내는 함수를 작성하는 것입니다. 함수명이 solution으로 주어지며, 예를 들어 solution(5)는 0, solution(100)은 1, solution(91)은 2를 반환해야 합니다.

int solution(int n) {
    int change_cnt = 0;
    while(n>=10){
        int ret = 0;
        while(n>0){
            ret += n%10;
            n /= 10;
        }
        n = ret;
        change_cnt++;
    }
    return change_cnt;
}
int solution(int n): 이 함수는 정수 n을 입력으로 받아서 해당 수의 digit degree를 계산합니다.

int change_cnt = 0;: change_cnt 변수는 digit degree를 나타내는 변수로, 초기값은 0입니다.

while(n >= 10) {: 주어진 수 n이 한 자릿수보다 크거나 같을 때까지 반복합니다.

int ret = 0;: ret 변수는 현재 수 n의 각 자릿수를 더한 결과를 저장합니다.

while(n > 0) {: 현재 수 n이 0보다 클 동안 반복합니다.

ret += n % 10;: 현재 수 n의 일의 자릿수를 ret에 더합니다.

n /= 10;: 현재 수 n의 일의 자릿수를 제거하여 다음 자릿수로 이동합니다.

n = ret;: 다 더한 결과인 ret를 n에 저장합니다.

change_cnt++;: 한 번의 대체 과정이 완료되었으므로 change_cnt를 1 증가시킵니다.

함수가 반복문을 통해 한 자릿수에 도달할 때까지 수행되고, 최종적으로 change_cnt를 반환합니다.
728x90
반응형

'CodeSignal' 카테고리의 다른 글

isBeautifulString  (0) 2023.12.31
Bishop and Pawn  (0) 2023.12.30
longestDigitsPrefix  (1) 2023.12.30
arrayMaxConsecutiveSum  (1) 2023.12.24
growingPlant  (0) 2023.12.24