본문 바로가기
Algorithm Problem Solving/BaekJoon

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

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 13.
728x90
반응형

BaekJoon 백준 1110 더하기 사이클 문제는 정수 N의 각 자리의 숫자를 더한 다음, N의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙여 새로운 수를 만들 때 몇 번 만에 원래 수로 돌아오는지 구하는 문제이다. 난이도는 Bronze 1이다.

 

백준 1110 더하기 사이클 문제 정보

출처

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

난이도

- 브론즈 1 / Bronze 1

 

더하기 사이클 문제 요약

  • 0보다 크거나 같고, 99보다 작거나 같은 정수 N이 주어질 때 다음과 같은 연산을 할 수 있다.
    • N이 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다.
    • N의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자릿수를 이어 붙이면 새로운 수를 만들 수 있다.
  • 위처럼 연산할 때 몇 번 만에 원래 수로 돌아올 수 있는지 N의 사이클의 길이를 구하여 출력한다.

 

문제 풀이 과정

  1. 새로운 수를 파라미터로 갖는 재귀 함수를 구현한다.
  2. 사이클 길이를 카운트한다.
  3. 각 자릿수를 더하고 새로운 수를 조건에 맞게 구한다.
  4. 새로운 수가 원래 수와 다르면 재귀 함수를 호출하고, 같으면 return 한다.
  5. 테스트 케이스 번호, 사이클 길이를 출력한다.

 

코드 및 설명
def add_cycle(n):
    global cnt  # 사이클 길이
    cnt += 1
    add = new = list()

    # 각 자리 수 더하기
    if len(n) == 1:
        n.insert(0, '0')
        add = n
    else:
        add = list(str(int(n[0]) + int(n[1])))

    # 새로운 수 구하기
    new.append(n[-1])
    new.append(add[-1])

    # 원래 수와 다르면
    if new != N:
        add_cycle(new)
    else:
        return


N = list(input())
cnt = 0
add_cycle(N)
print(cnt)

BaekJoon 백준 1110 더하기 사이클 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글