백준 10610번 : 30

박찬규·2023년 3월 27일
0

처음에 이 문제를 접했을때 전혀 감이 안잡혀서 힌트를 얻었다. 30의 배수를 만들기 위해선 10의 배수와 3의 배수인 수여야 하는데,
1. 10의 배수인 수는 0으로 끝나므로, 주어진 수에 0이 포함돼있어야한다.
2. 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 n = br.readLine();
        int[] arr = new int[10];

        int sum = 0;
        // 10의 배수
        if (n.contains("0")) {
            // 각 자리수의 합이 3의 배수.
            for (int i = 0; i < n.length(); i++) {
                sum += Integer.parseInt(String.valueOf(n.charAt(i)));
            }
            if (sum % 3 == 0) {
                for (int i = 0; i < n.length(); i++) {
                    arr[Integer.parseInt(String.valueOf(n.charAt(i)))]++;
                }
                for (int i = 9; i >= 0; i--) {
                    while (arr[i] > 0) {
                        System.out.print(i);
                        arr[i]--;
                    }
                }
            } else {
                System.out.println(-1);
            }
        } else {
            System.out.println(-1);
        }
    }
}

0개의 댓글