알고리즘 문제풀이/Greedy

백준 10610 파이썬(그리디)

Aytekin 2021. 12. 13. 19:45

30의 배수 중 가장 큰 수를 찾아서 출력해내는 문제이다.

 

위키피디아에 배수 판정법이라는 것을 알게되었다.

https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%88%98_%ED%8C%90%EC%A0%95%EB%B2%95

 

배수 판정법 - 위키백과, 우리 모두의 백과사전

배수 판정법은 배수인지 확인하려는 수의 배수가 맞는지 간단히 확인하는 것이다. 배수인지 확인하려는 수가 클 때에는 나눗셈을 이용하여 계산하는데 시간도 오래 걸리고 틀린 답이 나올 수

ko.wikipedia.org

 

결국 문제는 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