[백준-10610] 30

이말감·2022년 3월 14일
0

백준

목록 보기
11/49

문제

링크

코드

n = int(input())

if '0' in str(n) :
    arr = list(map(int, str(n)))
    arr = sorted(arr, reverse=True)
    if sum(arr) % 3 == 0 :
        print(''.join(list(map(str, arr))))
    else :
        print(-1)
else :
    print(-1)

풀이

처음에는 수를 조합해서 구해야 한다고 생각했기 때문에 itertools의 permutation을 이용해서 문제를 풀었다. 그런데 계속 에러가 발생하여 다른 방법이 없는지 다른 분들의 코드를 살펴봤다.
근데 알고보니.. 나는 30으로 나눠져야 한다고 해서 30으로만 나눴는데
30의 배수면 3의 배수이면서 10의 배수여야 한다는 글을 보고 이마를 빡빡 쳤다.
참고하여 코드를 작성했고, 맞출 수 있었다.

  1. 해당 숫자를 조합했을 때 10의 배수여야 하므로 숫자에 0이 있는지 먼저 확인한다.
    1-1. 0이 없는 경우 -1 출력
  2. 해당 숫자를 배열로 만들고 내림차순으로 정렬한다.
  3. 배열의 합을 3으로 나눴을 때 나눠지는지 확인한다.
    3-1. 3으로 나눠지지 않을 경우 -1 출력
    3-2. 3으로 나눠질 경우 배열을 join으로 합쳐서 출력
profile
전 척척학사지만 말하는 감자에요

0개의 댓글