alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 10610 30_파이썬 본문

Algorithm/백준 알고리즘_Python

[알고리즘][Python] 백준(BOJ) 10610 30_파이썬

알파이 2020. 10. 15. 11:03

 

10610 30    www.acmicpc.net/problem/10610

 

10610번: 30

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

www.acmicpc.net

 

 

 

 

문제 풀기 전 공부할 것 : 수학, 정렬, 정수론

 

 

 

 

 

 

 

풀이

<내용>

  • 30의 배수가 되려면 10의 배수인지, 3의 배수인지를 확인하면 된다.
  • 10의 배수 확인 방법 : 일의 자리 숫자가 0이면 된다.
  • 3의 배수 확인 방법 : 모든 자리 숫자의 합이 3으로 나누어 떨어지면 된다.
  • 이때 가장 큰 30의 배수는 큰 숫자대로 정렬하는 것이다.

 

 

<코드>

n = int(input())
nums = list(str(n))
nums.sort(reverse=True)

def solve(nums):
    if nums[-1] != '0':
        return -1
    
    if sum(map(int, nums)) % 3 != 0:
        return -1
    
    return int(''.join(nums))
        
print(solve(nums))

 

 

 

 

 

 

 

728x90
반응형
Comments