[백준] 10610번 30

거북이·2023년 1월 12일
0

백준[실버4]

목록 보기
24/91
post-thumbnail

💡문제접근

  • 순열을 이용해서 코드를 작성했는데 해당하는 경우에 대해서 전부 탐색하다보니 시간초과가 발생한 것 같다. 그래서 30의 배수가 되기 위한 조건을 생각해서 다시 코드를 작성했다.

30의 배수가 되기 위한 조건은 다음과 같다.
①. 각 자릿수의 숫자들을 모두 더한 결과가 3으로 나누어 떨어져야 한다.
②. 일의 자리 수가 0이어야 한다.

💡코드1

from itertools import permutations

N = list(input())

result = []
for i in permutations(N, len(N)):
    num = ""
    for j in range(len(i)):
        num += i[j]
    if int(num) % 30 == 0:
        result.append(int(num))
if len(result) == 0:
    print(-1)
else:
    print(max(result))

📌코드1(시간초과 발생)

💡코드2(메모리 : 31592KB, 시간 : 500ms)

N = list(input())
N.sort(reverse=True)
sum = ""
for i in N:
    sum += i
if int(sum) % 30 == 0:
    print(int(sum))
else:
    print(-1)

💡소요시간 : 13m

0개의 댓글