본문 바로가기
  • 초부득3 - 어제보다 나은 내일을 위해
  • 꿈이 현실이 되는 날까지
sw사관학교 정글 2기/01 기초,재귀,완전탐색, 정렬

[기초] 백준 1110번 더하기 사이클 with python3

by 금의야행 2021. 8. 13.

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

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

www.acmicpc.net

문제

 

내 풀이

def dfs(num):
    global count
    sth = int(num)
    num = str(num)

    if sth == n and count > 0:
        return

    if len(num) == 2:
        first = int(num[0])
        second = int(num[1])
        third = str(first + second)

        if len(third) == 1:
            next = str(second) + str(third)
            count += 1
            dfs(next)
        else:
            next = str(second) + str(third[1])
            count += 1
            dfs(next)

    elif num == '0':
        count += 1
        return

    elif len(num) == 1:
        first = 0
        second = int(num)
        third = str(second)
        # print(f'check{third}')

        if len(third) == 1:
            next = str(second) + str(third)
            count += 1
            dfs(next)

            # 재귀가 안멈춰
        elif len(third) == 2:
            next = str(second) + str(third[1])
            count += 1
            dfs(next)


if __name__ == "__main__":
    n = int(input())
    count = 0
    dfs(n)

    print(count)

해설

 

 

정답 풀이

#추가예정

출처:

 

해석

 

댓글