문제풀이/수학

[Python/파이썬] 백준 10610번 30

딜레이레이 2024. 2. 29. 00:11
 

10610번: 30

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

www.acmicpc.net

 

코드

num = input()
zero_idx = num.find('0')
if zero_idx == -1 or int(num) % 3 != 0:
    print(-1)
else:
    num_lst = sorted(list(num), reverse=True)
    print(''.join(num_lst))

 

이 문제는 3의 배수는 모든 자리의 수를 더하면 3의 배수가 된다는 사실을 알면 쉽게 풀 수 있다. 그렇지만 문제에서는 30의 배수를 찾는 것이니 맨 끝자리에 놓을 '0'이 존재하는지도 확인해야 한다.

 

- 0이 존재하는가

- 각 자리의 수의 합이 3의 배수인가

 

2가지 조건을 만족한다면 이제 내림차순으로 정렬해서 그대로 출력해주면 된다.