#33. 백준 1110번 문제 풀이: 더하기 사이클 문제 원본 보기
0 이상 99 이하의 정수가 주어진다. 26이 주어질 경우, 2+6 = 8 : 각 자리를 하나씩의 숫자로 생각하고 더한다. 그리고 6과 8을 붙인 수 68을 새로운 수로 한다. 68 > 6+8 = 14 : 8과 14의 1의 자리수를 붙인다. 84 가 된다. 84 > 8+4 = 12 : 4와 12의 1의 자리수를 붙인다. 42 가 된다. 42 > 4+2 = 6 : 2와 6을 붙인다. 26(처음수와 같다). 4번의 싸이클을 돌고 처음수가 되었다. N 이 주어졌을 때, N의 싸이클 길이를 구하는 프로그램을 작성하라.
입력/출력
--입력--
26
--출력--
4
문제풀이+해설
두자리 숫자가 있을 때 각 1의 자리, 10의 자리 수를 하나의 수로 분리하는 게 핵심이다.
또한 분리된 수를 문자열 붙이듯 두자리 숫자로 만드는게 핵심이다.

26을 2와 6로 분리하려면, 26/10 = 2(나누기 정수 몫), 26%10 = 6(나눈 나머지값) 으로 계산한다.
2와 6를 두자리로 붙이려면, 2*10 + 6 = 26이 된다.

위의 문제 조건을 앞에 방식으로 식으로 만들면 다음과 같다. 식에 26 을 넣으면 68이 나온다.
 ((N % 10) * 10) + (((N / 10) + (N % 10)) % 10) 
=   26%10 * 10   +   ( 26/10   +  26%10 )%10
=     6 * 10     +     ( 2     +   6 )%10
=      60        +          8
=               68      
파이썬에서 정수 나눗셈은 / 가 아니라 // 연사자를 사용한다.
code sol.
n = int(input())
n0 = n # 처음값 n0 에 저장
count = 0 # 루프 수 카운터
while True: # 무한 루프
  count += 1 # 루프 수 카운트
  n = ((n % 10) * 10) + (((n // 10) + (n % 10)) % 10) # 새로운 수 공식
  #     1의자리 *10     +    (10의자리 + 1의 자리)의 1의 자리수
  if n0 == n: # 처음수와 새로운 수가 같으면 루프 끝
    break;

print(count) # 루프수 출력
© 코드솔 - CodeSol. All Rights Reserved.