출처 : 백준, https://www.acmicpc.net/problem/10610
10610번: 30
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한
www.acmicpc.net
더보기
풀이
if __name__ == '__main__':
n = list(input())
if '0' not in n:
print(-1)
elif sum(map(int, n)) % 3 != 0:
print(-1)
else:
print(''.join(sorted(n, reverse = True)))
30의 배수이려면
1. 3의 배수이면서
2. 10의 배수이면 된다.
3의 배수이기 위한 조건은 숫자를 구성하는 모든 숫자를 합했을 때 3의 배수이면 되고,
10의 배수는 숫자에서 0이 들어가있으면 10의 배수로 만들 수 있으므로,
이 두 조건을 체크한 후 아니라면 -1을 return하고 맞다면 역정렬해서 붙여 return한다.
시간 복잡도
O(nlogn)
다른 사람의 풀이를 보면서 알게 된 점
-
고찰
고찰은 아닌데 이거 말고 한 문제를 3일 동안 붙잡고 있는 중인데 미칠 것 같다.
아직 브론즈.........
'알고리즘 > Python' 카테고리의 다른 글
[python] 백준 15649 - N과 M(1) (0) | 2022.03.18 |
---|---|
[python] 백준 6588 - 골드바흐의 추측 (0) | 2022.03.18 |
[python] 백준 1463 - 1로 만들기 (0) | 2022.03.16 |
[python] 백준 2581 - 소수 (0) | 2022.03.13 |
[python] 백준 1978 - 소수 찾기 (0) | 2022.03.13 |