그리디알고리즘
n=list(str(input()))
n=list(map(int,n))
sum=0
for i in range(len(n)):
sum+=n[i]
if not (sum%3) and 0 in n :
n.sort()
n.reverse()
n=list(map(str,n))
n=''.join(n)
print(int(n))
else :
print(-1)
30의 배수는 3*10의 배수이다. 즉 3의 배수이면서 10의 배수여야한다.
3의 배수는 모든 자릿수의 값의 합이 3의 배수 일 때, 3의 배수이다. 따라서 모든 자리의 자릿수를 더한 후, 3으로 나누어 나머지가 나오지 않는다면 3의 배수가 아니다. 또한 10의 배수는 1의 자리의 수가 0 이여야 한다. 결과로 모든 자리수의 합이 3으로 나눠지면서 끝자리수가 0 인 값이 입력한 n에 대한 30의 배수의 값을 만들어 낼 수 있다. 그렇게 나온 결과를 내림차순으로 정렬하면 답이된다.