반응형
문제
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을 반환하고
둘 다 조건에 맞다면 정렬되어 있는 수를 그대로 반환해 준다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 9613: GCD 합 (0) | 2023.06.07 |
---|---|
[파이썬, Python] 백준 2960: 에라토스테네스의 체 (0) | 2023.06.05 |
[파이썬, Python] 백준 3036: 링 (0) | 2023.06.01 |
[파이썬, Python] 백준 1094: 막대기 (0) | 2023.05.31 |
[파이썬, Python] 백준 1476: 날짜 계산 (0) | 2023.05.30 |