백준 숫자 놀이

KIMYEONGJUN·2024년 10월 20일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

각 줄에 숫자 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;
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글