[Python] 백준 10610 : 30
https://www.acmicpc.net/problem/10610
10610번: 30
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한
www.acmicpc.net
첫번째 시도
더보기
import itertools
numb = list(input())
#만들 수 있는 수 중에서 30의 배수, 그 중에서도 가장 큰 수를 만들어야 한다.
#만들지 못하면 -1 출력!
numb.sort(reverse=True)
nPr = itertools.permutations(numb, len(numb))
for num in list(nPr):
if int(''.join(num)) % 30 == 0:
print(int(''.join(num)))
exit(0)
print(-1)
당연히 메모리 초과가 날 줄 알았고... 역시 메모리 초과 이슈가 있었다. 하나하나 경우의 수를 만들어서 판단하는 과정이 매우 비효율적이다.
ANS
N = list(input())
N.sort(reverse=True)
sumV = 0
for idx in N:
sumV += int(idx)
if sumV % 3 != 0 or "0" not in N:
print(-1)
else:
print(''.join(N))
'알고리즘 > 백준' 카테고리의 다른 글
| [Python] 백준 15663: N과 M(9) (0) | 2024.01.22 |
|---|---|
| [Python]백준 1245: 농장 관리 (0) | 2023.05.22 |
| [Python] 백준 : 13164 행복 유치원 (0) | 2023.05.14 |
| [Python] 백준 2468 : 안전 영역 (0) | 2023.05.11 |
| [Python] 백준 12919: A와 B 2 (0) | 2023.05.08 |
TAGS.
