728x90
import sys
n = list(sys.stdin.readline().rstrip())
n.sort(reverse=True)
sum = 0
for i in n:
sum += int(i)
if sum % 3 != 0 or '0' not in n:
print(-1)
else:
print(''.join(n))
일의 자리수가 반드시 0이어야 하고 각 자리의 수를 모두 더했을때 3으로 나눠떨어져야 한다.
(예제 2에서 102의 각 자리수를 모두 더하면 3이다)
만들 수 있는 30의 배수 중 가장 큰 수를 구하라 했으니 내림차순 정렬을 해주면 가장 큰 수를 구할 수 있다.
위의 조건을 만족하지 못하면 30의 배수가 아니므로 -1을 출력하고 맞다면 문자열 리스트를 출력해주면 된다.
그리디 문제와 함께 수학 문제도 같이 유형을 정해서 풀어봐야겠다.
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 11656 파이썬(python) : 접미사 배열 - 문자열 슬라이싱 (0) | 2022.07.19 |
---|---|
[백준] 11655 파이썬(python) : ROT13 - 기초지식 (0) | 2022.07.19 |
[백준] 1159 파이썬(python) : 농구 경기 (0) | 2022.07.18 |
[백준] 10798 파이썬(python) : 세로읽기 - 사이즈계산 (0) | 2022.07.18 |
[백준] 5525 파이썬(python) : IOIOI (0) | 2022.07.18 |