
문제이해
30의 배수를 구하고 그 중 가장 큰 수를 출력하라는 문제이다.
처음에는 n의 글자수를 다 분리해서 조합을 해 경우의 수를 다 만들고 30의 배수를 판별하려 했다.
하지만 그것은 너무 복잡한것...!!
30의 배수의 특징이 이 문제의 킥이었다.
※ 30의 배수 특징
3의 배수이면서 0으로 끝나야 한다.
여기서 3의 배수를 판별하는 방법중 유명한 방법이 있다.
각 자리수의 합이 3의 배수이면 그 수는 3의 배수이다!
30의 배수를 판별한 후에는 문제가 아주 쉬워졌다.
30의 배수 중 가장 큰 수를 찾는 것은 각 자리 수를 큰 수부터 정렬하면 된다.
정답
n = input()
total = 0
for i in range(len(n)):
total += int(n[i])
if (total % 3 == 0) and ('0' in n):
print(''.join(sorted(n)[::-1]))
else:
print(-1)
★ n을 처음에 숫자형으로 두고 풀었더니 문자형으로 사용하는 경우가 더 많아서 이번 문제에서는 문자형으로 두고 풀었다.
'알고리즘문제풀이' 카테고리의 다른 글
| [백준/Python] 2805번 나무 자르기 (0) | 2025.02.11 |
|---|---|
| [백준/Python] 18110번 solved.ac (0) | 2025.02.10 |
| [백준/Python] 14425번 문자열 집합 (0) | 2025.02.06 |
| [백준/Python] 2003번 수들의 합 2 (0) | 2025.02.06 |
| [백준/Python] 1003번 피보나치 함수 (0) | 2025.02.03 |
