PS/백준
[Python] 10610번 30
s_omi
2024. 7. 15. 10:17
✏️ 문제
문제 파악
30의 배수가 되려면 10의 배수도 되어야 하므로 0이 없으면 10의 배수가 될 수 없다.
입력을 받은 수의 각 자리를 배열에 넣은 후 내림차순으로 정렬해 각 자리 수를 옮겨가며 푸는 코드를 짰는데 시간 초과가 나왔다 ㅠ
for문을 하나 삭제하려니 코드를 어떻게 짤 지 모르겠어서 찾아봤다 ..
알고보니 3의 배수를 체크하는 방법이 따로 있었던 것 .. ! (새로 알게 되었다 오히려 좋아)
각 자리 수를 더해서 3으로 나눴을 때 나머지가 없으면 3의 배수랍니다.. 이를 활용해서 코드를 다시 짜니 풀렸다.
알고리즘
- 수학
- 그리디 알고리즘
- 문자열
- 정렬
- 정수론
코드
n = input()
n = sorted(n, reverse=True)
sum = 0
if '0' not in n: # 10의 배수 확인
print(-1)
else:
for i in n:
sum += int(i) # 각 자리 수의 합
if sum % 3 != 0 : # 3의 배수 체크
print(-1)
else :
print(''.join(n))