728x90
🔗 문제 링크
https://www.acmicpc.net/problem/1769
📌 문제 개요
주어진 숫자 X에 대해 각 자리 숫자의 합을 반복하여 한 자리 수가 될 때까지 진행
이 과정의 횟수를 출력하고, 최종 결과가 3의 배수인지 판별하는 문제
📌 접근 방법
- 숫자의 자릿수가 매우 크기 때문에 String으로 입력받는다
- 각 자리 숫자를 더하는 과정을 반복한다
- 한 자리 수가 될 때까지 while문을 사용한다
- 반복 횟수를 카운트한다
📌 핵심 아이디어
- 각 자리수의 합을 반복하면 결국 한 자리 수가 된다 (디지털 루트 개념)
- 최종 값이 3으로 나누어 떨어지면 3의 배수
- 문자열을 이용하여 자리수를 안전하게 처리하는 것이 중요
📌 전체 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String X = br.readLine();
int cnt = 0;
while (X.length() > 1){
int sum = 0;
for(int i = 0; i < X.length(); i++){
sum += X.charAt(i) - '0';
}
X = String.valueOf(sum);
cnt++;
}
System.out.println(cnt);
int num = Integer.parseInt(X);
System.out.println(num % 3 == 0 ? "YES" : "NO");
}
}
📄 정리
이 문제는 단순 구현처럼 보이지만,
실제로는 디지털 루트 + 3의 배수 판별 개념이 핵심이다.
문자열을 이용해 큰 수를 처리하고,
자리수 합을 반복하는 패턴을 익혀두면 다양한 문제에 응용
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 백준 15688 수 정렬하기 5 JAVA 풀이 (정렬, 시간복잡도) (0) | 2026.04.09 |
|---|---|
| 백준 13301 타일 장식물 JAVA 풀이 (피보나치, DP) (0) | 2026.04.08 |
| 백준 1236 성 지키기 JAVA 풀이 (구현, 그리디) (0) | 2026.04.06 |
| 백준 5800 성적 통계 JAVA 풀이 (정렬, 구현) (0) | 2026.04.06 |
| 백준 2828 사과 담기 게임 JAVA 풀이 (그리디, 구현) (0) | 2026.04.04 |