개발 연습장/백준 문제풀이

[파이썬, Python] 백준 10610: 30

LooanCheong 2023. 6. 2. 10:30
반응형

문제

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

 

10610번: 30

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

www.acmicpc.net

코드

nums = list(input())
nums.sort(reverse = True)
cnt = 0

for i in nums:
    cnt += int(i)

if cnt % 3 != 0 or "0" not in nums:
    print(-1)
else:
    print(''.join(nums))

설명

우선 각 수를 리스트로 받아서 저장해 두고
큰 수를 만들기 위해서 역순으로 정렬을 해주자.

30의 배수가 되려면 2가지 조건이 있다.

1. 1의 자리의 수는 0이어야 한다.
2. 모든 자릿수를 더하면 3의 배수여야 한다.

이 조건을 맞춰서 합을 계산하기 위한 cnt를 만들어주었고,
조건문에 "0"을 체크해서 둘 중 하나라도 해당하지 않으면 -1을 반환하고
둘 다 조건에 맞다면 정렬되어 있는 수를 그대로 반환해 준다.

반응형