30... 존경할만하네 ...
import sys
input = sys.stdin.readline
n = list(input().rstrip())
n.sort(reverse=True)
n = int("".join(n))
if n%30==0:
print(n)
else:
print(-1)
사실 ... 이 문제 풀이에는 살짝 트릭이 있긴 한데 ^^ ...
처음에 문제를 읽고 감이 안 오다가, 밑에 알고리즘 분류에 정렬이 있길래 출력값들을 모두 보니 입력값을 정렬한 값이었다.
그래서 정렬하고 int
로 만들어서 30으로 나누면 되구나 ...!
라는 아이디어 아닌 아이디어가 떠올랐고,
풀었더니 맞았다 ^^ ...
한 순도 98% 풀이랄까 ~..
n = input()
n = sorted(n, reverse=True)
sum = 0
if '0' not in n: # 우선은 input의 디폴트인 string으로 받았기에 '0' 문자로 적음
print(-1)
else:
for i in n:
sum += int(i)
if sum % 3 != 0 : # 3의 배수 체크
print(-1)
else :
print(''.join(n))
다들 나랑 풀이 방법이 쪼오끔 다르다. 일단 포인트는
- 0이 들어있냐?
- 3의 배수 (모든 수를 더했을 때 3의 배수이면 3의 배수) 이냐?
를 판단해준다.
뭐 조금 달라도 거기서 거기인 풀이같다.
포인트만 잘 잡으면 쉬운 그리디!