Computer Science/Problem Solving (PS)
[BOJ_6378 | while] 디지털 루트
여울코딩
2019. 1. 2. 12:07
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 < 10) System.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 |
반응형