[BOJ] 10610: 30

이슬비·2023년 2월 16일
0

Algorithm

목록 보기
85/110
post-thumbnail

30... 존경할만하네 ...

1. 내 풀이: 성공

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% 풀이랄까 ~..

2. 다른 풀이

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))

풀이 출처: https://jae04099.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%92%80%EC%9D%B4-%EB%B0%B1%EC%A4%80-10610-30

다들 나랑 풀이 방법이 쪼오끔 다르다. 일단 포인트는

  • 0이 들어있냐?
  • 3의 배수 (모든 수를 더했을 때 3의 배수이면 3의 배수) 이냐?

를 판단해준다.

뭐 조금 달라도 거기서 거기인 풀이같다.

3. 마치며

포인트만 잘 잡으면 쉬운 그리디!

profile
정말 알아?

0개의 댓글