알고리즘/백준

<백준> 1110번 더하기 사이클 java 문제풀이

Han_5ung 2022. 1. 5. 22:45

 

 

풀이

import java.util.Scanner;

public class Baekjoon_1110 {
    public static void main(String[] args) {
        int count = 0;
        Scanner sc = new Scanner(System.in);
        int oldnum = sc.nextInt();        // 수 입력
       	int num = oldnum;                 // if에 사용하기 위해 num에 같은 값 복사
        while (true) {
            int num10 = num / 10; 		  // 10의 자리 추출
            int num1 = num % 10;  		  //1의 자리 추출
            num = getNum10(num1) + getNum1(num1, num10);
            count++;
            if (oldnum == num) 			  //처음 주어진 수와 새로운 수가 같을 경우
                break;
        }
        System.out.println(count);

    }

    public static int getNum10(int a) { 
        return a * 10; 		        	//추출된 1의 자리 x10
    }

    public static int getNum1(int a, int b) { 
        return (a + b) % 10;			//더한 수의 1의 자리 추출
    }

}

1. 주어진 수의 각 자리 수를 더하여 새로운 수를 구함  ex) 26 -> 2 + 6 = 8,   12 -> 1 + 2 = 3,   79 -> 7 + 9 = 16

2. 주어진 수의 1의 자리에 x10 + 더한 수의 일의 자리

                                   ↓

1. num1, num10을 통해 각 자리의 수를 구한 후

2. getNum10 + getNum1으로 새로운 수를 구하였다.

후, 반복문을 빠져나가기 위해 처음 주어졌던 수 (oldnum)과 새로 구한 수 (num)을 비교하여

서로 같을 경우 break문을 통하여 반복문을 종료시켰다.


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

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net