백준

(python) 백준 1110 - 더하기 사이클

komizke 2023. 1. 17. 00:00

백준 1110

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

 

1110번: 더하기 사이클

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

www.acmicpc.net

 

1. 문제설명

 

원래 수의 각 자릿수의 합의 일의 자리 숫자 -> 다음 수의 일의 자리 숫자

 

원래 수의 일의자리 숫자 -> 다음 수의 십의자리 숫자

 

원래 수가 나올 때까지 반복하며 사이클의 길이를 구하는 문제

 

2. 문제 풀이

 

입력 받은 수를 업데이트하는 연산만 해주면 된다.

 

초기 수로 되돌아 왔을 때  프로그램 종료

 

ten_number = n % 10
one_number = (n // 10 + n % 10) % 10
#다음 수 업데이트
n = ten_number * 10 + one_number

 

3. 전체 코드

 

n = int(input())
origin_result = n
cycle = 0
while True:
    ten_number = n % 10 #십의 자리 숫자
    one_number = (n // 10 + n % 10) % 10    #일의 자리 숫자
    #다음 수 업데이트
    n = ten_number * 10 + one_number
    #사이클 수 업데이트
    cycle += 1
    # 한주기 돌았을 때
    if n == origin_result:
        break
#사이클 수 출력
print(cycle)