https://www.acmicpc.net/problem/1110
N의 일의 자릿수는 새로운 수의 십의 자리로 된다.
N의 일의 자릿수와 십의 자릿수를 더한 값의 1의 자릿수는 새로운 수의 일의 자리로 간다.
하지만, N이 한 자릿수 정수라면 앞에 0을 붙여서 더한다.
먼저 주어진 수를 N이라 하고 새로운 수를 T로 가정을 해보자.
먼저 주어진 수 N의 일의 자릿수는 새로운 수 T의 십의 자릿수로 간다
T = (N % 10) * 10 // T의 십의 자릿수
즉, 10으로 나눈 나머지 값에 10을 곱하면 T의 십의 자릿수가 된다.
필자는 일의 자릿수는 구현 했지만 새로운 수의 십의 자리로 가는 것을 구현 못해서 다른 사람의 풀이를 참조 하였다.
다음은 각 자릿수의 합을 구해보자.
N의 십의 자릿수는 나누기 10을 하면 N이 한 자릿수이면 0, 그 외에는 십의 자릿수가 그대로 반환된다.
그리고 N의 일의 자릿수는 나머지인 %를 쓰면 된다.
이 두개를 더한 뒤 10으로 나눈 나머지가 N의 각 자릿수의 합의 일의 자릿수가 T의 일의 자릿수가 된다.
T = ((N / 10)+(N % 10)) % 10) // T의 일의 자릿수
step1 의 코드와 step2의 코드를 합치면 T가 된다
T = ((N % 10) * 10) + ((N / 10)+(N % 10)) % 10) // step1 + step2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int cycle = 0;
int b = a;
while(true) {
a = ((a % 10) * 10) + (((a / 10)+(a % 10)) % 10);
cycle++;
if(b==a) break;
}
System.out.println(cycle);
}
}