본문 바로가기
CODING/BAEKJOON

[BAEKJOON] 10610번 30

by snow_white 2022. 2. 7.


이 문제에 대해서 나도 그렇고 여러 사람들이 오해하고 있는 부분이 있었다.

나는 입력된 숫자를 조합하여 30의 배수 중 가장 큰 수를 찾아야 하는 것으로 이해했다.

하지만 문제 해결법은 간단했다.

입력된 수의 조합으로 가장 큰 수를 만들고, 그 수가 30의 배수이면 되는 것이다.

따라서 입력받은 수를 하나씩 쪼개어 역순으로 정렬하면 예를들어 102는 210이 될 것이다.

이 210이 30의 배수이면 210을 출력한다. 아니라면 -1 출력한다.

 

이 문제를 통해 30의 배수를 구하는 방법을 새로이 알게 되었다.

만약 123의 수가 3의 배수인지 판별하려면 각 자리 수를 더했을 때 3의 배수이면 되는 것이다.

1+2+3=6이므로 6은 3의 배수이다. 즉, 123은 3의 배수가 된다.

이 문제는 30의 배수를 찾는 것이다.

따라서 숫자를 역순으로 정렬했을 때 가장 마지막 인덱스에 위치하는 수가 0이라면 30의 배수에도 만족할 것이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String[] num = br.readLine().split("");
		String str = "";
		int temp=0;
		Arrays.sort(num, Collections.reverseOrder());
		
		for(int i=0; i<num.length; i++) {
			str +=num[i];
			temp += Integer.parseInt(num[i]);
		}

		if(Integer.parseInt(num[num.length-1])!=0 || temp%3!=0) {
			System.out.println("-1");
		}else
			System.out.println(str);			
	}
}

[출처]

https://www.acmicpc.net/problem/10610

 

10610번: 30

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

www.acmicpc.net

 

'CODING > BAEKJOON' 카테고리의 다른 글

[BAEKJOON] 11047번 동전 0  (0) 2022.02.08
[BAEKJOON] 1051번 숫자 정사각형  (0) 2022.02.08
[BAEKJOON] 1475번 방 번호  (0) 2022.02.06
[BAEKJOON] 1436번 영화감독 숌  (0) 2022.02.05
[BAEKJOON] 7568번 덩치  (0) 2022.02.03

댓글