문제 출처 https://www.acmicpc.net/problem/1110
내가 작성한 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int copy=n;
int count=0;
while(true) {
n = ((n%10)*10) + ((n/10) + (n%10)) %10;
count++;
if(copy==n) {
break;
}
}
System.out.println(count);
}
}
접근 방법
- 우선 숫자(n)을 받으면 10으로 나눈 나머지 값을 구하면 일의 자리가 된다.
ex) 56%10 = 6
여기서 새로운 숫자의 십의 자리로 변환 해야하므로 6X10= 60 으로 만들어 준다.- 숫자(n)의 십의 자리와 일의자리를 더한 값을 구한다.
ex) 56(n) -> 5 (=n/10) + 6 (=n%10) = 11 이 나온다.
여기서 새로운 숫자의 일의 자리로 변환 해야하므로 11 % 10 = 1
60 + 1 = 61 새로운 숫자가 생성된다.- 이런 방법을 수식으로 나타내면 ((n%10)*10) + ((n/10) + (n%10)) %10 이다. 이 값을 다시 n에 넣어주면서 count에 1씩 올려주면서 카운트를 센다.
- 처음 숫자 값을 copy에 넣어주고 처음 값n과 같아지면 반복문을 종료한다.