반응형
https://www.acmicpc.net/problem/10610
1. 문제
숫자가 주어질 때, 해당 자릿수 숫자들의 조합으로 30의 배수 중 최대값을 만들어서 출력한다. 없을 경우 -1을 출력한다.
2. 접근
30의 배수는 3의 배수 중, 끝이 0으로 끝나는 수이다. 3의 배수는 각 자릿수의 합이 3의 배수인 수이다.
https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%88%98_%ED%8C%90%EC%A0%95%EB%B2%95
그러면 우리는 가장 큰 30의 배수를 찾는 것이므로,
1. 각 자릿수의 합이 3의 배수이고, 0이 존재하는지를 체크한다.
2. 가장 큰 숫자를 구하는 것은 각 숫자들을 내림차순으로 정리하면 된다.
3. 소스코드
numbers = list(map(int, list(input())))
if sum(numbers) % 3 != 0 or 0 not in numbers:
print(-1)
else:
numbers = list(map(str, sorted(numbers, reverse=True)))
ans = ''.join(numbers)
print(ans)
반응형
'컴퓨터공학 > 알고리즘' 카테고리의 다른 글
[백준] 1049. 기타줄 (0) | 2020.05.09 |
---|---|
[백준] 1120. 문자열 (0) | 2020.05.09 |
[백준] 2217. 로프 (0) | 2020.05.09 |
[백준] 11399. ATM (0) | 2020.05.09 |
DP. 동전 거스름돈과 이항계수 (0) | 2020.05.01 |