30의 배수 중 가장 큰 수를 찾아서 출력해내는 문제이다.
위키피디아에 배수 판정법이라는 것을 알게되었다.
https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%88%98_%ED%8C%90%EC%A0%95%EB%B2%95
결국 문제는 30의 배수인지 확인하는 것이기 때문에 위키피디아에서 나온 개념을 적용하면 될 것 같다.
- 3의 배수는 각 자리 숫자의 합이 3의 배수인 수이다.
- 30의 배수는 3의 배수이면서 일의 자리가 0인 수이다.
위의 두가지 조건을 만족시키도록 코드를 짜보면 될 것 같다.
처음에 1번 조건은 생각을 했지만
2번 조건은 생각해내지 못했다.
문제를 꾸준히 풀면서 이런 수에 대한 개념이나 정리들을 정리해놓으면
나중에 훨씬 더 생각해내기 쉬울 것 같다.
# 10610 30
n = input()
n = sorted(n,reverse=True)
sum = 0
if '0' not in n:
print(-1)
else:
for i in n:
sum += int(i)
if sum % 3 != 0:
print(-1)
else:
print(''.join(n))
728x90
'알고리즘 문제풀이 > Greedy' 카테고리의 다른 글
백준 4796 파이썬 (그리디) (0) | 2021.12.15 |
---|---|
백준 1715 파이썬 (그리디) (0) | 2021.12.14 |
백준 1026 파이썬(그리디) (0) | 2021.12.10 |
백준 2720 파이썬(그리디) (0) | 2021.10.02 |
백준 1339 파이썬(그리디) (0) | 2021.10.02 |