알고리즘/Python

[백준/Python] 10610번: 30

_SIHA_ 2022. 3. 6. 20:48

📖  문제 링크

https://www.acmicpc.net/problem/10610

 

10610번: 30

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한

www.acmicpc.net

 

👩‍💻  문제풀이

 

당연히 순열로 풀어야 한다고 생각했다가 10^5라는 숫자를 모두 순열로 조회하기엔 시간이 너무 오래 걸린다는 걸 깨달았다.

 

그래서 검색해보니 30의 배수가 되려면 숫자에 0이 들어가야 하고,

각 자리 숫자를 모두 더했을 때 3으로 나눠 떨어지면 30의 배수가 될 수 있다는 것!

수포자인 나에게 이런 문제는 난감하지만 모르는 걸 채워간다는 생각으로 코드를 익혔다. 

 

어렵지 않은 코드지만, 추후 다시 풀었을 때 당황하지 않길 바라며 풀이를 남겨본다. 

 

(https://pacific-ocean.tistory.com/340님의 코드를 참고했다. )

 

 

[백준] 10610번(python 파이썬)

문제 링크: https://www.acmicpc.net/problem/10610 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들

pacific-ocean.tistory.com

 

 

 

  최종 코드

n = list(input())

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))