공부하기/백준

[Java] 백준 풀기 6378 - 디지털 루트

XEV 2024. 1. 26. 23:19

자바 백준 6378번

브론즈 3

https://www.acmicpc.net/problem/6378

 

6378번: 디지털 루트

양의 정수 N의 디지털 루트를 구하려면 N을 이루고 있는 모든 자리수를 더해야 한다. 이때, 더한 값이 한 자리 숫자라면, 그 수가 N의 디지털 루트가 된다. 두 자리 이상 숫자인 경우에는 다시 그

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 수학, 구현, 문자열, 임의 정밀도, 큰 수 연산

 

 

 

 

 

코드 풀이

import java.util.Scanner;

public class Main {
    // 입력값을 저장하는 변수
    static String input;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 사용자로부터 여러 양의 정수 입력을 받음
        while (true) {
            // 한 줄을 입력받아 input 변수에 저장
            input = sc.nextLine();
            
            // 입력값이 "0"이면 루프 종료
            if (input.equals("0")) {
                break;
            }
            
            // 입력값의 디지털 루트를 계산하고 출력
            int digitalRoot = calculateDigitalRoot(input);
            
            System.out.println(digitalRoot);
        }
    }
    
    // 디지털 루트를 계산하는 메서드
    private static int calculateDigitalRoot(String input) {
        // 입력값이 한 자리 숫자가 될 때까지 반복
        while (input.length() > 1) {
            // 각 자리수를 더한 값을 저장하는 변수
            int sum = 0;
            
            // 각 자리수를 더함
            for (int i = 0; i < input.length(); i++) {
                sum += Character.getNumericValue(input.charAt(i));
            }
            
            // 새로운 값을 input 변수에 저장
            input = String.valueOf(sum);
        }
        
        // 결과값을 정수로 변환하여 반환
        return Integer.parseInt(input);
    }
    
}