백준 1110 더하기 사이클

코드
import sys
n = int(sys.stdin.readline())
def get_cycle(n):
count = 0
original_number = n
while True:
if n < 10:
n *= 10
sum_digits = (n // 10) + (n % 10)
n = (n % 10) * 10 + (sum_digits % 10)
count += 1
if original_number == n:
break
return count
print(get_cycle(n))
- 위 코드는 시간 초과가 떴다
- 확실한 원인은 모르겠으나, 불필요한
두 자리 수로 만들기
연산이 포함돼서 그런 것 같다
import sys
n = int(sys.stdin.readline())
original_number = n
count = 0
while True:
sum_digits = (n // 10) + (n % 10)
new_digits = (n % 10) * 10 + (sum_digits % 10)
count += 1
if original_number == new_digits:
break
n = new_digits
print(count)
- 각 자리 숫자를 더하는 부분은
n // 10
으로 십의 자리 숫자를 구하고, n % 10
은 일의 자리 숫자를 구해, 두 숫자를 더한 것을 sum_digits
에 저장함
n % 10
으로 일의 자리 숫자를 구하고, sum_digits % 10
로 두 숫자의 합의 일의 자리 숫자를 구해 이어 붙임