[JAVA]백준 1769번 3의 배수
[JAVA]백준 1769번 3의 배수
📌문제 링크
https://www.acmicpc.net/problem/1769
📌문제 설명
문제에 나온 대로 이 문제를 다른 문제로 변환을 하면, 주어진 숫자의 자리수를 더했을때 한 자릿수가 되도록 계속 더한 후 한 자릿수가 되었을떄 3의 배수인지를 확인하면 되는 문제입니다.
📌코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
// BufferedReader와 BufferedWriter를 사용하여 입력과 출력을 처리합니다.
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
static String str; // 입력 문자열을 저장할 변수
static int answer; // 최종 결과를 저장할 변수
public static void main(String[] args) throws Exception {
input(); // 입력을 받는 메서드 호출
solve(); // 문제를 해결하는 메서드 호출
}
// 입력을 받는 메서드
public static void input() throws Exception {
str = br.readLine(); // 한 줄의 입력을 받아 str에 저장
br.close(); // BufferedReader를 닫음
}
// 재귀적으로 각 자리 숫자의 합을 구하는 메서드
public static int recur(String arr, int cnt) {
// 문자열의 길이가 1이면 재귀 종료
if (arr.length() == 1) {
answer = Integer.parseInt(arr); // 최종 결과를 answer에 저장
return cnt; // 재귀 호출 횟수를 반환
}
int sum = 0;
// 문자열의 각 자리를 숫자로 변환하여 합을 구함
for (int i = 0; i < arr.length(); i++) {
sum += arr.charAt(i) - '0';
}
// 합을 문자열로 변환하여 재귀 호출
return recur(Integer.toString(sum), cnt + 1);
}
// 문제를 해결하는 메서드
public static void solve() throws Exception {
int cnt = recur(str, 0); // 재귀 호출을 통해 결과와 호출 횟수를 구함
bw.write(cnt + "\n"); // 호출 횟수를 출력
// 최종 결과가 3의 배수인지 확인하여 출력
if (answer % 3 == 0) {
bw.write("YES\n");
} else {
bw.write("NO\n");
}
bw.flush(); // BufferedWriter를 비움
bw.close(); // BufferedWriter를 닫음
}
}
This post is licensed under CC BY 4.0 by the author.