https://www.acmicpc.net/problem/10610
10610번: 30
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한
www.acmicpc.net
풀이
30의 배수는 주어진 수의 각자리수를 더해서 3으로 나누어지면서 끝자리가 무조건 0이어야하는 수여야한다는 정보만 안다면 쉽게 풀 수 있는 문제이다.
iterable 자료형.sorted(N, reverse=True)
오름차순으로 정렬될 문자를 내림차순으로 바꾸어준다. 문제에서는 주어진 숫자를 이용해서 만들 수 있는 최대값이다.
# 10610번 30
# 30의 배수는 각 자리수를 더해서 3의 배수가되고 맨끝자리가 0이어야한다.
N = input()
N = sorted(N, reverse = True)
sum = 0
for i in N:
sum += int(i)
if '0' not in N or sum % 3 != 0:
print(-1)
else:
print(''.join(N))
'백준 > 그리디' 카테고리의 다른 글
[백준] 1969번 DNA - 파이썬 (0) | 2022.02.03 |
---|---|
[백준] 1946번 신입 사원 - 파이썬 (0) | 2022.02.02 |
[백준] 11399번 ATM - 파이썬 (0) | 2022.02.02 |
[백준] 12845번 모두의 마블 - 파이썬 (0) | 2022.02.02 |
[백준] 2875번 대회 or 인턴 - 파이썬 (0) | 2022.01.29 |