Algorithm/백준알고리즘

[백준알고리즘] 반복문 14단계 -1110번 더하기 사이클(JAVA)

개발자하소서 2022. 6. 21. 09:04
728x90
반응형
SMALL

📌문제

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의 사이클의 길이를 구하는 프로그램을 작성하시오.

 

 📌입력

첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.

 
 

📌출력

첫째 줄에 N의 사이클 길이를 출력한다.

 

📌코드

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int n1 = n/10; // n1은 주어진 수의 십의 자리수 
        int n2 = n%10; // n2는 주어진 수의 일의 자리수 
        int n3 = 1; // 카운팅 해주는 변수 
        int temp = n1 + n2; // temp는 각 자리수의 합 
        int ans = n2 * 10 + temp; // ans는 계산시행시 나온 결과값 
          
            while(n != ans){ // 계산 후 결과값이 첫 입력값과 같을 때까지 반복한다.
                n1 = n2; // 결과값의 십의 자리가 계산 전 일의 자리수 
                n2 = ans % 10; // 결과값의 일의자리를 구하기 위해 10으로 나눈 나머지를 구한다.
                temp = n1 + n2;
                ans = n2 * 10 + temp %10; // 각각 자신의 오른쪽 수를 결합
                n3++; // 한 사이클동안 몇번 반복이 주어지는 지 체크한다.
            }
            System.out.println(n3);
    }
}
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();// 입력하는 값 
        int temp = n; // 입력하는 값의 수 
        int count =0; // 카운트 변수 
        
        while(true){ // 참일때까지 반복해라 
            int left = temp/10; // 입력값의 십의자리 
            int right = temp%10; // 입력값의 일의자리
            temp = right *10 + (left + right)%10; 
            // 일의자리를 십의자리로 만들고 
            // 두수의 합에서 나온 수의 일의자리와 더해준다
            count++; // 카운트 증가
            
             if(temp == n) { // 만약 두수를 합한 값이 처음에 입력값과 동일하다면
                 break; // 반복문을 멈춰라 
             }
            
        }  System.out.println(count); // 카운트 출력 
    }
}
728x90
반응형
LIST