- 어떤 수가 3의 배수가 되기 위해서는 모든 자리수을 더한 결과가 3의 배수여야 한다
- 어떤 수를 섞어서 10의 배수가 되도록 만들기 위해서는 그 수가 0을 포함하고 있어야 한다
- item not in list -> item이 list에 없을 때 True
- list.sort() 오름차순 정렬
- list.sort(reverse=True) 내림차순 정렬
- list.pop(0) 리스트의 맨 앞 요소를 끄집어낸다(FIFO) 큐
- print(n.pop(0), end='') 줄을 바꾸지 않고 출력
n = list(input())
# n의 요소들을 더하기 위한 변수
sum = 0
# 3의 배수인지를 판별하기 위해 각 자리수를 더한 sum을 구한다
for i in range(len(n)):
sum += int(n[i])
# step1: n에 0이 없으면(정수 n을 섞어서 10의 배수를 만들 수 없다) -1을 출력한다
# step2: list n의 요소들을 모두 더한 결과가 3의 배수가 아니면 -1을 출력
# 어떤 숫자가 3의 배수가 되기 위해서는 모든 자리수를 더한 결과가 3의 배수가 되어야 한다.
if(('0' not in n) or ((sum % 3) != 0)):
print('-1')
# 0을 찾아내고 내림차순으로 배열하기 위해서는 문자열 리스트를 정수 리스트로 바꾸어야 한다
for i in range(len(n)):
n[i] = int(n[i])
# step3: 만들 수 있는 가장 큰 30의 배수를 만들기 위하여 n에 있는 0을 가장 마지막으로 배치한다
# 0을 가지고 있으면서 3의 배수인 경우에 구한다
if(0 in n and (sum % 3) == 0):
for i in range(len(n)):
if(n[i] == 0):
# n[i]과 n[len(n)-1] 자리 switch
dummy = n[i]
n[i] = n[len(n)-1]
n[len(n)-1] = dummy
# step4: 오름차순으로 정렬하여 가장 큰 30의 배수를 만든다
n.sort(reverse=True)
for i in range(len(n)):
print(n.pop(0), end ='')