[백준] 1110번 : 더하기 사이클 - Java

https://www.acmicpc.net/problem/1110

🎁 문제

🎲 알고리즘

N의 일의 자릿수는 새로운 수의 십의 자리로 된다.
N의 일의 자릿수와 십의 자릿수를 더한 값의 1의 자릿수는 새로운 수의 일의 자리로 간다.
하지만, N이 한 자릿수 정수라면 앞에 0을 붙여서 더한다.


Step 1

먼저 주어진 수를 N이라 하고 새로운 수를 T로 가정을 해보자.
먼저 주어진 수 N의 일의 자릿수는 새로운 수 T의 십의 자릿수로 간다

T = (N % 10) * 10 // T의 십의 자릿수

즉, 10으로 나눈 나머지 값에 10을 곱하면 T의 십의 자릿수가 된다.

Step 2

필자는 일의 자릿수는 구현 했지만 새로운 수의 십의 자리로 가는 것을 구현 못해서 다른 사람의 풀이를 참조 하였다.

다음은 각 자릿수의 합을 구해보자.
N의 십의 자릿수는 나누기 10을 하면 N이 한 자릿수이면 0, 그 외에는 십의 자릿수가 그대로 반환된다.

그리고 N의 일의 자릿수는 나머지인 %를 쓰면 된다.
이 두개를 더한 뒤 10으로 나눈 나머지가 N의 각 자릿수의 합의 일의 자릿수가 T의 일의 자릿수가 된다.

T = ((N / 10)+(N % 10)) % 10) // T의 일의 자릿수

Step 3

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);
		
	}
}

좋은 웹페이지 즐겨찾기