본문 바로가기

코딩테스트/BOJ

[백준/파이썬] 1110번: 더하기 사이클 (Python)

문제

www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

풀이

 

 - 브루트 포스, 완전탐색, 재귀

 

 - 기존 숫자의 오른쪽과 합한 숫자의 오른쪽을 더하고, 그 합이 n과 같아질 때까지 재귀함수 반복

 

코드

n = int(input())
narr = list(map(int, str(n))) # 숫자를 리스트로
cnt = 0

def cycle(narr, n, cnt):
    result = list(map(int, str(sum(narr))))
    hap = narr[-1] * 10 + result[-1] # 기존숫자의 오른쪽과, 합한 숫자의 오른쪽 더하기
    cnt += 1
    if hap == n:
        print(cnt)
    else:
        hap = list(map(int, str(hap))) # 숫자를 리스트로
        cycle(hap, n, cnt)


cycle(narr, n, cnt)