백준 10610번 바로가기

나의 풀이

주어진 숫자를 재조합해서 30의 배수를 만드는 문제. $ 30 = 3 * 10 $ 이므로 두 가지를 확인하면, 30의 배수를 만들 수 있는지 알 수 있다.

  1. 주어진 숫자에 0이 포함되는가
  2. 각 자리의 합이 3의 배수인가 (3의 배수 판별법) 만들 수 있는 최대 숫자는 각 자리를 내림차순 정렬하면 쉽게 구할 수 있다.
# 입력
import sys

n = str(sys.stdin.readline().strip())
nums = list(map(int, list(n)))

# 처리
if '0' in n and sum(nums) % 3 == 0:
    print(''.join(map(str, sorted(nums, reverse=True))))
else:
    print(-1)