더한 숫자를 기존 숫자 뒤에 붙이고 기존 숫자의 제일 왼쪽 숫자를 없앤다. 268 => 68
이 과정을 반복하였을 때 원래 숫자로 돌아올 수 있는 사이클의 길이(반복한 횟수) N을 구해보자.
입력 -> 출력
26 -> 4
55 -> 3
1 -> 60
0 -> 1
71 -> 12
출력 매커니즘(예시)
26 -> 68
68 -> 84
84 -> 42
42 -> 26
N = 4
유의사항(코드 설계)
정수 형태의 수 A 입력
결과값이 a일 경우 break를 거는 루프 시작
if문을 이용하여 수가 한 자릿수인 지 확인
한자릿수의 경우에 뒤에 같은 수를 더하는 작업 진행
두자릿수의 경우에 앞자리와 뒷자리를 더하고 그 값을 a의 뒤에 붙여넣고 앞자리 탈락시키는 과정 추가(result에 갱신)
사이클의 길이 N 1 증가
break로 빠져나온 뒤에 N 출력
사용할 문법
while
if
map
print
자릿수 나누기(a/10, a%10)
정답코드
#0~99사이의 변수 A 입력
A = int(input())
B = 0
N = 1
A1 = int(A % 10)
A10 = int(A/10)
#반복문 형성(사이클 구성문), 사이클 길이 N 추가
while A != B:
#A가 두 자릿수일 때
if A/10 > 0:
#B는 A의 1의자리가 10의자리로 가고 10의자리 수는 없어지며
#각 자릿수를 더한 값의 1의 자리가 새로운 1의자리수가 된다
B = int(A1*10 + (A1 + A10)%10)
else:
#A가 한 자릿수일 때
#같은 숫자 뒤에 붙이기
B = A1*10 + A1
A1 = int(B % 10)
A10 = int(B/10)
#A와 B가 같을 때 종료
if A == B:
break
N += 1
#사이클의 길이 N 출력
print(N)