풀이
- 해당 문제를 처음 접했을 때 순열로 해서
- 현재 n으로 받은 숫자의 모든 숫자를 조합해서
- 30의 배수가 되는지 확인해보는 것으로 이해했기에
- 분명히 메모리랑, 시간이 부족할 것 같은데
- 우선은 그렇게 적용하여 제출했지만 역시나 메모리 초과... (아래 두 번째 코드)
- 그래서 뭐 어쩌라는거지 싶어서
- 그냥 만들 수 있는 가장 큰 수가 30으로 나누어 떨어지는지 해보니까
- 됨... 어이... 핳
정답 코드
import sys
input = sys.stdin.readline
n = sorted(list(input().rstrip('\n')),reverse=True)
if '0' in n:
result = ''
for i in n: result += i
print(-1) if int(result)%30 else print(int(result))
else: print(-1)
메모리 초과 코드
import sys
from itertools import permutations
input = sys.stdin.readline
n = sorted(list(input().rstrip('\n')),reverse=True)
if '0' in n:
n.remove('0')
for i in (sorted(set(list(permutations(n,len(n)))),reverse=True)):
result = ''
for j in i:
result += j
if int(result)%30:
print(int(result)*10)
sys.exit(0)
print(-1)
else: print(-1)
'알고리즘' 카테고리의 다른 글
[백준, 파이썬, 3273번] 두 수의 합 (2) | 2023.10.07 |
---|---|
[백준, 파이썬, 11656번] 접미사 배열 (0) | 2023.10.05 |
[백준, 파이썬, 1037번] 약수 (0) | 2023.10.04 |
[백준, 파이썬, 9655번] 돌 게임 (0) | 2023.10.03 |
[백준, 파이썬, 1244번] 스위치 켜고 끄기 (0) | 2023.10.02 |