본문 바로가기
백준

[백준] 1110번: 더하기 사이클 - JAVA(자바)

by z00h 2022. 10. 31.

 

 

 

 

 

 

 

주어진 수 : N

왼쪽 수 : left

오른쪽 수 : right

연산을 통해 바뀌는 변수 : temp

사이클 길이 : count

 

 

주어진 수의 왼쪽 자리수(left)는  주어진 수 / 10

주어진 수의 오른쪽 자리수(right)는 주어진 수 % 10

 

temp는 연산을 통해 계속 바뀌게 된다.

temp는 오른쪽 수 + 왼쪽과오른쪽 수의 합의   오른쪽 자리수로 구할 수 있다.

즉 temp = right * 10 + (left + right) % 10 이 된다.

 

위의 연산을 while문을통해 반복하면서 반복할때마다 count를 하나씩 ++한후 

if문을 사용하여 temp와 N이 같아지면 while문을 종료시키고 count를 출력하면 된다.

 

while문을 사용하여 구현해보면 다음과 같다.

 

 

public class b1110 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int N = in.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(N == temp) {
                break;
            }

        }
        System.out.println(count);


        }

    }

 

 

 

앞의 설명에서  left, right는 주어진 수와 함께 연산을 한다고 하였지만 

N은 고정된 받아온 값이고 temp를 이용하여 수를 계속 바꿔 주어야하기때문에 

temp = N이 되는것이고 int left = N / 10 이 아닌 temp / 10이 되는 것이다. (right도 마찬가지)