728x90
반응형
문제 설명
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다.
미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라.
제한 사항
-N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.
-미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라.
입출력 예
input |
output |
30 |
30 |
102 |
210 |
2931 |
-1 |
80875542 |
88755420 |
접근법
먼저 30의 배수가 될 조건을 생각해 봅시다. 30의 배수가 되려면, 모든 자릿수의 합이 3의 배수여야하며, 일의 자리가 0이여야합니다. 따라서 이 조건을 구현해주시면 됩니다. 또 하나의 조건인 가장 큰 수를 만들기 위해서는, 리스트를 내림차순으로 정렬한 뒤, 출력해 주시면 됩니다.
나의 코드
import sys
num = list(sys.stdin.readline().replace("\n",""))
num.sort(reverse=True)
if int("".join(num))%3 != 0 or ('0' not in num):
print("-1")
else:
print("".join(num))
반응형
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준] 11656번 접미사 배열 (0) | 2021.03.19 |
---|---|
[백준] 10825번 국영수 (0) | 2021.03.19 |
[백준] 11004번 K번째 수 (0) | 2021.03.19 |
[백준] 1764번 듣보잡 (2) | 2021.03.18 |
[백준] 2108번 통계학 (0) | 2021.03.18 |