백준 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라는 쉬운 난이도의 문제인데도, 많은 것을 얻어간 것 같다.
- (사실 엄청 쉬워서 그냥 넘길려고 했는데, 지피티와 질의응답을 해보니 엄청난 이유가 있어서 화들짝 블로그 작성중이다...)
'개발 노트 > 알고리즘 문제' 카테고리의 다른 글
| 백준 2252 줄세우기 (골드 3) (1) | 2025.06.18 |
|---|---|
| 백준 3190 뱀 (골드 4) (0) | 2025.06.17 |
| 백준 11404 플로이드 (골드 4) (0) | 2025.05.29 |
| 백준 1916 최소비용 구하기 (골드 5) (0) | 2025.05.26 |
| 백준 11052 카드 구매하기 (실버 1) (0) | 2025.05.23 |