본문 바로가기
Algorithm/Beakjoon

[Java] baekjoon 1110 : 더하기 사이클 / while문

by Amy97 2021. 7. 19.
728x90

문제 


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

 

1110번: 더하기 사이클

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

www.acmicpc.net

해결 


예시)

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

→ 각 수의 십의 자릿수와 일의 자릿수를 알아야 더하기 사이클을 진행할 수 있다.

 

n의 십의 자릿수 = 10으로 나눌 때의 몫

int n / 10 = n의 십의 자릿수

 

n의 일의 자릿수 = 10으로 나눈 나머지 

int n % 10 = n의 일의 자릿수

구현 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
 
        int n = sc.nextInt();
        int newNum = n; // 입력받은 수부터 시작하므로 n으로 초기화
        int a, b;
        int cnt = 0;
 
        while (true) {
            a = newNum / 10// 십의 자릿수 구하기
            b = newNum % 10// 일의 자릿수 구하기
            newNum = b * 10 + (a + b) % 10
            // b가 십의 자릿수가 돼야 하므로 10을 곱해준다
            // a + b 결과의 일의 자릿수가 새로운 수의 일의 자릿수이므로 
            // 10으로 나눈 나머지 값을 더한다
            cnt++;
 
            if (n == newNum) { 
                break// 원래 수로 돌아오면 사이클을 멈춘다
            }
        }
 
        System.out.println(cnt); 
 
    }
}
cs

결과 


 

728x90