[BOJ_6378 | while] 디지털 루트

2019. 1. 2. 12:07Computer Science/Problem Solving (PS)



while문의 사용에 익숙해져 있다면 해결하는데 큰 어려움을 겪지 않았을 문제였던 것 같다.

스트링으로 인풋을 입력받는데

0이면 인풋받는 while문을 빠져나오고

스트링을 캐릭터로 파싱해서 다 더해주는 단계를 밟았다.


다 더한 Integer값이 10미만이면 바로 출력하고

10보다 크다면 그때부터는 Integer를 다루는 digitalRoot함수에 집어넣어 문제를 해결하였다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.*;
public class BOJ_6378 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        while(true) {
            String num = input.next();
            if(num.equals("0")) break;
            int sum = 0;
            for (int i = 0; i < num.length(); i++) { sum += (int) (num.charAt(i) - '0'); }
            if (sum < 10System.out.println(sum);
            else {
                while (sum >= 10) { sum = digitalRoot(sum); }
                System.out.println(sum);
            }
        }
    }
    public static int digitalRoot(int n){
        int sum = 0;
        while(n>0){
            sum += n%10; n=n/10;
        }return sum;
    }
}
cs


반응형