Algorithm
[Java] 백준 6378번 : 디지털 루트
Woogie
2022. 3. 2. 16:36
1. 문제
https://www.acmicpc.net/problem/6378
2. 풀이
- 예제 입력에 최대 1000자리까지 조건이 있어서 String으로 활용하여 풀이하였다.
- 몇 개의 숫자가 들어올지 모르니 while문에 true로 조건을 주었다.
- String으로 입력을 받고 문제에 입력의 마지막 줄은 0으로, 입력한 값이 0이면 멈춘다는 것을 알 수 있다.
- 중간에 while문을 true 조건을 주고 문자열 길이가 한자릿수 라면 break를 하고 그 값을 출력하게 조건을 주었다.
- 길이가 한자리 보다 크다면 안에 for문을 만들고 charAt을 사용하여 한 글자씩 쪼개어 아스키코드 값 0을 기준으로 빼서 그 값을 sum변수에 대입하여 더한다.
- 값이 int형 이므로 형 변환을 하고 입력했던 값에 대입하고, 그 값을 출력한다.
3. 코드
package baekjoon;
import java.util.Scanner;
public class Q6378 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
String str = scanner.next();
if (str.equals("0")) { // 문자열 길이가 0 이면 break
break;
}
while (true) {
int sum = 0; // 더한 값 저장 할 변수
if (str.length() < 2) { // 문자열 길이가 두자릿 수 보다 작으면
break;
} else {
for (int i = 0; i < str.length(); i++) {
sum += str.charAt(i) - 48;
}
}
str = String.valueOf(sum);
}
System.out.println(str);
}
}
}