지나가던 개발자
[Python] 백준 10610번(30) 문제 풀이 본문
n = list(map(int, list(input())))
if "0" not in str(n):
print(-1)
elif sum(n) % 3 != 0:
print(-1)
else:
print(str(sorted(n, reverse=True)).strip("[""]").replace(", ",""))
https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%88%98_%ED%8C%90%EC%A0%95%EB%B2%95
(...)
29의 배수는 일의 자리 숫자를 3배하여 나머지 자리에서 더한 결과가 29의 배수인 수이다.
30의 배수는 3의 배수이면서 일의 자리가 0인 수이다.
31의 배수는 일의 자리를 3배하고 나머지 자리에서 뺀 값이 0 또는 31의 배수인 수이다.
(...)
30의 배수를 구해야 하니 30의 배수 판정법을 알아보자. 위키백과 曰, 30의 배수는 3의 배수이면서 일의 자리가 0이어야 한단다. 그럼 0으로 끝나면 되고, 3의 배수는 각 자리수의 합이 3의 배수인 수이므로, 입력받은 N의 각 자리수의 합이 3의 배수인 수를 출력해야 한다. 그런데 그 중 가장 큰 수를 출력해야 한다. 가장 큰 수라면 내림차순으로 정렬해서 0으로 끝나기만 한다면 가장 큰 수가 된다. 아무렴 어떻게 배치해도 3의 배수니까 내림차순 배치가 가장 큰 수겠지. 그렇게 나온 코드가 위 코드이다.
'PS > Python' 카테고리의 다른 글
[Python] 백준 3181번(줄임말 만들기) 문제 풀이 (0) | 2022.06.16 |
---|---|
[Python] 백준 2436번(공약수) 문제 풀이 (0) | 2022.06.15 |
[Python] 백준 2748번(피보나치 수 2) 문제 풀이 (0) | 2022.06.12 |
[Python] 백준 25083번(새싹) 문제 풀이 (0) | 2022.06.11 |
[Python] 백준 10801번(카드게임) 문제 풀이 (0) | 2022.06.11 |
Comments