알고리즘/[ Baekjoon ]

[ BOJ ][JAVA][10610] 30

kim.svadoz 2021. 4. 28. 19:32
728x90
반응형

www.acmicpc.net/problem/10610

 

10610번: 30

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한

www.acmicpc.net

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 256 MB 22225 8216 6425 36.578%

문제

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다.

미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라.

입력

N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.

출력

미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라.

예제 입력 1

30

예제 출력 1

30

예제 입력 2

102

예제 출력 2

210

예제 입력 3

2931

예제 출력 3

-1

예제 입력 4

80875542

예제 출력 4

88755420

코드

import java.io.*;
public class p10610 {
    static BufferedReader br;
    static String N;
    static int[] arr;
    static long len;
    public static void main(String[] args) throws IOException {
        br = new BufferedReader(new InputStreamReader(System.in));
        N = br.readLine();

        len = N.length();
        arr = new int[10];
        long total = 0;

        for (int i = 0; i < len; ++i) {
            int tNum = Integer.parseInt(N.substring(i, i + 1));
            arr[tNum] += 1;
            total += tNum;
        }

        if (!N.contains("0") || total % 3 != 0) {
            System.out.println("-1");
            return;
        }

        for(int i = 9; i >= 0; i--) {
            while(arr[i] > 0) {
                System.out.print(i);
                arr[i]--;
            }
        }
    }
}
728x90
반응형

'알고리즘 > [ Baekjoon ]' 카테고리의 다른 글

[ BOJ ][JAVA][10799] 쇠막대기  (0) 2021.04.28
[ BOJ ][JAVA][10798] 세로읽기  (0) 2021.04.28
[ BOJ ][JAVA][10451] 순열 사이클  (0) 2021.04.28
[ BOJ ][JAVA][10430] 나머지  (0) 2021.04.28
[ BOJ ][JAVA][9613] GCD 합  (0) 2021.04.28