더 좋은 문제 풀이가 있거나 궁금하신 점이 있다면 편하게 댓글 남겨주세요!
이번 문제는 처음 숫자 N과 같아질 때까지 연산을 무한 반복하는 문제이다. 따라서 while문을 사용하여 조건에 해당하면 반복을 중단하는 알고리즘이 필요하다. 그럼 while문 안에는 어떤 코드를 작성해야 할까?
이를 알아보기 위해 먼저 문제를 이해해보자. 숫자 입력 받은 숫자를 N이라 하고 연산하는 과정에서 새로 만들어진 숫자를 result 라고 하자.
N의 일의 자리 숫자는 새로운 숫자(result)의 십의 자리가 되고, result 의 일의 자리 숫자는 N의 일의 자리 숫자와 십의 자리 숫자를 더한 값이 된다. 그러나 여기서 조건이 하나 더 있다. N의 일의 자리 숫자와 십의 자리 숫자를 더했을 때 10보다 큰 수라면 더한 결과값의 일의 자리 숫자가 result의 일의 자리 숫자가 된다.
그럼 각 숫자의 일의 자리 숫자와 십의 자리 숫자는 어떻게 구할 수 있을까? 연산자 / 과 % 를 이용해 구할 수 있다. 연산자 / 을 통해 N의 십의 자리 숫자를 구할 수 있고, 연산자 % 를 이용하여 N의 일의 자리 숫자를 구할 수 있다.
N % 10 // 일의 자리 숫자
N / 10 // 십의 자리 숫자
위의 연산자를 통해 result를 구하는 코드를 작성해보자.
result = (N % 10) *10 + ((N / 10)+(N % 10)) % 10
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int result = N;
int cnt = 0;
while(true){
int num1 = result % 10; //일의 자리
int num2 = result / 10; //십의 자리
if(num1 + num2 >= 10 ) result = (num1 * 10) + (num1+ num2)%10 ;
else result = (num1 * 10) + (num1 + num2);
cnt++;
if (result == N) break;
}
System.out.print(cnt);
}
}