알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - 30(10610)

HRuler 2023. 1. 13. 21:58

1. 문제

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

 

10610번: 30

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

www.acmicpc.net

2. 풀이

import sys
input = sys.stdin.readline

# n : 가장 큰 30의 배수로 만들기 전의 수
n = input()
n_str = ''.join(sorted(n, reverse=True))
if int(n_str) % 30 != 0:
    print(-1)
else:
    for i in n_str:
        print(i, end='')

3. 후기

 - 입력받은 수가 가장 큰 30의 배수를 만들 수 있는 수라고 가정할 때, 대상 수는 내림차순으로 정렬하여 30으로 나누어져야 한다.

 때문에 30으로 나누어지지 않는다면 가장 큰 30의 배수를 만들 수 없는 수이기 때문에 -1을 출력한다.

 이후 가장 큰 30의 배수를 출력하는 것은 내림차순 정렬한 수를 출력하기만하면 된다.