본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


문제링크


문제

0보다 크거나 같고, 99보다 작거나 같은 정수를 두 자리로 쓴 후(10보다 작은 자연수는 앞에 0을 붙임)에 로 시작한다. 두 자리수를 더한다. 그럼, 처음 숫자의 가장 오른쪽 자리수와 앞에서 구한 합의 가장 오른쪽 자리수를 이어 붙이면 새로운 숫자를 만들 수 있다. 이것을 계속 하다 보면, 원래 숫자를 얻을 수 있다. 다음 예를 보자.

26부터 시작한다. 2+6 = 8이다. 새로운 숫자는 68이다. 6+8 = 14이다. 새로운 숫자는 84이다. 8+4 = 12이다. 새로운 숫자는 42이다. 4+2 = 6이다. 새로운 숫자는 26이다.

위의 예는 4번만에 원래 숫자로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.

N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.


그냥 수학적 문제... 
좀만 생각하면 풀 수 있습니다. 아자아자 화이팅!!

import java.util.Scanner; //https://www.acmicpc.net/problem/1110

public class PlusCycle { static int result; static int initData; static int changeData; public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); initData = Integer.parseInt(scan.nextLine().trim()); result = 0; changeData = initData; while (true) { int a = changeData / 10; int b = changeData % 10; result++; changeData = (b * 10) + ((a + b) % 10); if (changeData == initData) { System.out.println(result); break; } } } }