문제 내용은 입력으로 수를 받아 새로운 수를 만들어야 하는데, 새로운 수는 먼저 숫자가 10 미만이라면 왼쪽에 0을 붙여주고 난 뒤
만들어진 숫자의 가장 오른쪽 값 + 숫자를 쪼갠 뒤 모두 더해준 값 을 입력과 같은 숫자가 나올 때까지 계속 만들어주고, 동일한 숫자가 만들어졌다면 시도한 횟수를 출력해주면 끝이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int first = Integer.parseInt(br.readLine());
int cur = first;
int count = 0;
String s = String.valueOf(cur);
while (true) {
if (Integer.parseInt(s) < 10) {
s = "0" + s;
}
String left = s.substring(0, 1);
String right = s.substring(s.length() - 1);
String calc = String.valueOf(Integer.parseInt(left) + Integer.parseInt(right));
s = right + calc.substring(calc.length() - 1);
count += 1;
if (first == Integer.parseInt(s)) {
System.out.println(count);
break;
}
}
}
}
문제 풀다가 주의할 점은 문제를 정확히 이해해야 하는데 일단 숫자가 10 미만이라면 왼쪽에 0을 붙여주고 이후 가장 왼쪽과 오른쪽 값을 분리해준 뒤 오른쪽 값 + 받은 숫자를 다 쪼개서 따로 더해준 후 그 숫자의 가장 오른쪽 자리 숫자를 합쳐주는 식으로 진행해야 한다
약간 이해가 안될 수 있는데, 만든 숫자의 가장 오른쪽과 다 쪼개서 합친 숫자의 오른쪽을 합치라는 얘기고(int로 더하는게 아님..) 합친 결과가 처음 숫자와 동일하다면 시도한 횟수를 출력해주면 끝이다
Leave a Reply