
내가 생각했을때 문제에서 원하는부분
각 줄에 숫자 N이 주어진다.
N은 100,000보다 작은 양의 정수이다.
마지막 입력은 0이며,
0에 대한 결과는 출력하지 않는다.
한 줄에 하나씩 한 자릿수 결과를 출력한다.
내가 이 문제를 보고 생각해본 부분
프로그램은 사용자로부터 숫자를 입력받는다.
입력이 0일 때 종료한다.
문제에 요구사항에 맞춰 끝점을 설정한거다.
입력된 숫자가 10 이상일 경우,
즉 두 자리 수 이상일 때,
각 자릿수를 더해야 한다.
이를 위해 reduceToSingleDigit 메서드를 사용한다.
reduceToSingleDigit 메서드는 숫자가 한 자리 수가 될 때까지 sumOfDigits 메서드를 반복적으로 호출한다.
이 메서드는 주어진 숫자의 각 자릿수를 더하여 새로운 숫자를 반환한다.
코드로 구현
package baekjoon.baekjoon_23;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 백준 2145번 문제
public class Main812 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while(true) {
line = br.readLine();
int N = Integer.parseInt(line);
if(N == 0) {
break;
}
System.out.println(reduceToSingleDigit(N));
}
br.close();
}
private static int reduceToSingleDigit(int number) {
while(number >= 10) {
number = sumOfDigits(number);
}
return number;
}
private static int sumOfDigits(int number) {
int sum = 0;
while(number > 0) {
sum += number % 10; // 각 자릿수를 더함
number /= 10; // 다음 자릿수로 이동
}
return sum;
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.