본문 바로가기
개발 노트/알고리즘 문제

백준 10610 30 (실버 4)

by LeeInGyu 2025. 6. 16.

백준 10610 30 (실버 4)

링크: 10610 30


접근 방법

  • 큰 숫자 순으로 정렬 후 30의 배수인지 확인

소스 코드

소스 코드: 구현 알고리즘

N = input()

N = sorted(N, reverse=True)
N = int("".join(N))

if N % 30 == 0:
    print(N)
else:
    print(-1)

코드 개선 사항(GPT 4o)

N = input()
digits = list(N)

if '0' not in digits:
    print(-1)
elif sum(map(int, digits)) % 3 != 0:
    print(-1)
else:
    digits.sort(reverse=True)
    print(''.join(digits))
  • 30의 배수는 명확하게 하나의 두 개의 조건을 만족한다.
    • 조건 1. 숫자의 합이 3의 배수이다.
    • 조건 2. 마지막 숫자가 0이어야 한다.
  • 두 가지 조건만 확인 한다면 30의 배수가 되어 더 효율적인 코드를 작성할 수 있다.

결론

  • 30의 배수의 조건이 이렇게 명확한지 모르고 있었다.
  • 이 문제 덕분에 실버 4라는 쉬운 난이도의 문제인데도, 많은 것을 얻어간 것 같다.
  • (사실 엄청 쉬워서 그냥 넘길려고 했는데, 지피티와 질의응답을 해보니 엄청난 이유가 있어서 화들짝 블로그 작성중이다...)