1. 문제
https://www.acmicpc.net/problem/10610
10610번: 30
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한
www.acmicpc.net
2. 풀이
import sys
input = sys.stdin.readline
# n : 가장 큰 30의 배수로 만들기 전의 수
n = input()
n_str = ''.join(sorted(n, reverse=True))
if int(n_str) % 30 != 0:
print(-1)
else:
for i in n_str:
print(i, end='')
3. 후기
- 입력받은 수가 가장 큰 30의 배수를 만들 수 있는 수라고 가정할 때, 대상 수는 내림차순으로 정렬하여 30으로 나누어져야 한다.
때문에 30으로 나누어지지 않는다면 가장 큰 30의 배수를 만들 수 없는 수이기 때문에 -1을 출력한다.
이후 가장 큰 30의 배수를 출력하는 것은 내림차순 정렬한 수를 출력하기만하면 된다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
(Python)백준 코딩테스트 연습 - 대칭 차집합(1269) (0) | 2023.01.15 |
---|---|
(Python)백준 코딩테스트 연습 - 로프(2217) (0) | 2023.01.15 |
(Python)백준 코딩테스트 연습 - 보물(1026) (0) | 2023.01.13 |
(Python)백준 코딩테스트 연습 - 큐 2(15258) (0) | 2023.01.13 |
(Python)백준 코딩테스트 연습 - 요세푸스 문제(1158) (0) | 2023.01.12 |