백준 10610번: 30 (https://www.acmicpc.net/problem/10610)
설명
입력된 숫자들을 재조합하여 가장큰 30의 배수를 만드는 문제입니다.
일단 각 숫자 자릿수의 합이 3의 배수라면 전체 숫자는 항상 3의 배수가 된다는 정수론의 개념을 이해하고 문제를 풀 수 있습니다. 문제 에서는 30의 배수 이므로 각 자릿수의 합이 3인지 확인하고, 0이 포함되어 있는 경우에는 내림차순으로 출력하게 되면 정답을 구할 수 있습니다.
def sol():
n = input()
sum = 0
for i in n:
sum += int(i)
if sum % 3 != 0 or len(n) <= 1 or '0' not in n: # '0' not in n 조건으로 출력초과에 안걸린다.
print(-1)
return None
else: #조건에 해당 될 경우
result = list( map( int, n)) #내림차순으로 출력하여 최댓값 출력
result.sort(reverse = True)
result = list(map(str, result))
result = int(''.join(result))
print(int(result))
return None
sol()
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
10. 백준 2437번: 저울 문제풀이 (0) | 2020.05.22 |
---|---|
9. 백준 1946번: 신입 사원 문제풀이 (0) | 2020.05.21 |
7. 백준 1541번: 잃어버린 괄호 (0) | 2020.05.21 |
6. 백준 1138번: 한 줄로 서기 (0) | 2020.05.20 |
5. 백준 2217번: 로프 문제풀이 (0) | 2020.05.20 |