코린이의 소소한 공부노트

[백준 온라인 저지] 10610. 30 본문

코딩테스트 풀이/JAVA

[백준 온라인 저지] 10610. 30

무지맘 2023. 6. 29. 18:59

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

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

 

1. 입력

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

 

2. 출력

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

- 그 수가 존재하지 않는다면, -1을 출력하라.

 

3. 예제

 

4. 코드

import java.util.*;
class Main{
    public static void main(String[] args){
        char[] nums = new Scanner(System.in).next().toCharArray();
        int[] count = new int[10]; // 0 ~ 9까지의 개수를 저장
        int sum = 0;
        for(int i=0 ; i<nums.length ; i++) {
            int x = nums[i]-'0';
            sum += x;
            count[x]++;
        }
        StringBuilder sb = new StringBuilder();
        if(count[0]!=0 && sum%3==0) {
            for(int i=9 ; i>=0 ; i--) {
                if(count[i]!=0) {
                    for(int j=0 ; j<count[i] ; j++)
                        sb.append(i);
                }
            }
        } else
            sb.append(-1);
        System.out.print(sb.toString());
    }
}

- 21212KB, 336ms

- 입력이 정수 범위를 넘어갈 수 있으니 int나 long으로 받지 않는다.