PS/BOJ

[Python] 10610번 30

s_omi 2024. 7. 15. 10:17
728x90
반응형
SMALL

✏️ 문제

 

문제 파악

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

 

 

728x90
반응형
LIST

'PS > BOJ' 카테고리의 다른 글

[Python] 1049번 기타줄  (0) 2024.07.15
[Python] 1946번 신입 사원  (0) 2024.07.15
[Python] 1439번 뒤집기  (0) 2024.07.15
[Python] 13305번 주유소  (0) 2024.07.15
[Python] 1026번 보물  (2) 2024.07.14