Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[백준] Greedy: 30 본문

코테준비

[백준] Greedy: 30

Seung__ 2022. 5. 21. 23:38

문제

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

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

입력

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

출력

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

 

문제접근

먼저 30의 배수의 특징을 확인해야 한다.

30, 60, 90, 120, 150, ...., 3360, .....

각 자리의 합이 3의 배수이며 0을 포함해야 한다.(왜냐? 3의배수이면서 10의배수임)

이 때, 가장 큰 경우를 반환해야 하기 때문에 정렬하여 문자열로 바꿔주면 된다.

 

풀이 코드

package baekjun;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.stream.LongStream;

public class _10610 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] stringNumbers = br.readLine().split("");
        long[] numbers = new long[stringNumbers.length];
        for (int i=0; i< stringNumbers.length; i++){
            numbers[i] = Long.parseLong(stringNumbers[i]);
        }

        int code = 0;

        //30의 배수가 될 수 있는지 확인.
        long sum = LongStream.of(numbers).sum();
        if (sum%3 == 0){//3의배수 통과
            //3의 배수이면서 10의 배수
            Arrays.sort(numbers);
            if (numbers[0] == 0){ //0가지고 있음?
                StringBuilder sb = new StringBuilder();
                for (int i=numbers.length-1; i>=0; i--){
                    sb.append(String.valueOf(numbers[i]));
                }

                System.out.println(sb.toString());
            }else{
                code = -1;
            }

        }else{
            code = -1;
        }

        if (code == -1 ){
            System.out.println(-1);
        }
    }
}

'코테준비' 카테고리의 다른 글

[백준] Greedy: 카드 정렬하기  (0) 2022.05.26
[백준] Greedy: 신입사원  (0) 2022.05.23
[백준] Greedy: 수들의 합  (0) 2022.05.21
[백준] Greedy: 주유소  (0) 2022.05.21
[백준] Greedy: 전자레인지  (0) 2022.05.20
Comments