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의 싸이클 길이를 구하는 프로그램을 작성하라.
문제풀이+해설
두자리 숫자가 있을 때 각 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