[백준] 30 10610번 - Java

GoshK·2022년 2월 16일
0

[백준] Java

목록 보기
33/49
post-thumbnail

[백준] 30 10610번

나의 풀이

public class Thirty {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String N = br.readLine();
        makeThirty(N);
    }
    static private void makeThirty(String num) {
        StringBuilder sb = new StringBuilder();
        char[] chars = num.toCharArray();
        Arrays.sort(chars);
        int sum = 0;
        for(int i = chars.length - 1; i > -1; i--) {
            sb.append(chars[i]);
            sum += chars[i] - '0';
        }

        if(!num.contains("0") || sum % 3 != 0) {
            System.out.println(-1);
        } else {
            System.out.println(sb);
        }
    }
}
  • 30의 배수가 되려면 조건이 있다.
    0을 포함해야 하며 각 자리수의 합은 3의 배수가 되어야 한다.
  • 입력받은 값을 char 배열로 만들어주고, 해당 배열을 오름차순 정렬 시킨다.
  • 그리고 가장 큰 수를 구해야 하기 때문에 뒤에서부터 차례대로 각 자리수를 더해주고 StringBuilder에 넣어준다.
  • 만약 N의 값에 0이 포함되어 있지 않거나, 각 자리수의 합이 3의 배수가 아니라면, -1을 출력하고, 아니면 sb의 값을 출력한다.

0개의 댓글