주어진 수 : 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도 마찬가지)
'백준' 카테고리의 다른 글
[백준] 10610번: 30 - JAVA(자바) / 그리디 알고리즘 (0) | 2022.11.30 |
---|---|
[백준] 11047번: 동전 0 - JAVA(자바) / 그리디 알고리즘 (0) | 2022.11.29 |
[백준] 2563번: 색종이- JAVA(자바) (0) | 2022.11.18 |
[백준] 1546번: 평균 - JAVA(자바) (0) | 2022.11.01 |
[백준] 2525번: 오븐시계 -JAVA(자바) (0) | 2022.10.19 |