Post

[JAVA]백준 1769번 3의 배수

[JAVA]백준 1769번 3의 배수

📌문제 링크


https://www.acmicpc.net/problem/1769

Image

📌문제 설명


문제에 나온 대로 이 문제를 다른 문제로 변환을 하면, 주어진 숫자의 자리수를 더했을때 한 자릿수가 되도록 계속 더한 후 한 자릿수가 되었을떄 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.