https://www.acmicpc.net/problem/10610
10610번: 30
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한
www.acmicpc.net
https://github.com/stellaluminary/Baekjoon
GitHub - stellaluminary/Baekjoon
Contribute to stellaluminary/Baekjoon development by creating an account on GitHub.
github.com
30의 배수라 함은 끝자리가 0으로 하나 이상이 존재해야하고 0을 제외한 각 자리수의 합이 3의 배수가 되어야 한다.
그리고 출력값은 만들고 싶은 수 중 가장 큰 수이므로 숫자를 list로 받아 역순으로 정렬한 뒤 위 조건에 맞는 조건에 한하여 출력하고 그렇지 않다면 -1을 출력하도록 만드는 것이 최선이다.
n = list(map(int, input()))
n.sort(reverse=True)
if n[-1] == 0 and sum(n) % 3 == 0:
print(''.join(map(str, n)))
else:
print(-1)