https://www.acmicpc.net/problem/10610
풀이
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 |