개발자 블로그
10610번 '30' 본문
10610번: 30
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한
www.acmicpc.net
나의 풀이
n = list(input())
n.sort(reverse=True)
if int(n[-1]):
print(-1)
else:
s = sum([int(n[i]) for i in range(len(n))])
if s % 3:
print(-1)
else:
print(''.join(n))
3의 배수의 특징을 알면 풀이가 쉽다... 각 자리 수의 합이 3의 배수이라는 특징을 활용하자.
1) 그 중 가장 큰 수를 구하기 위해 정렬 메소드를 사용.
2) 문제에선 30의 배수를 찾는 거기 때문에 마지막에 0이 들어가있는지 일차적으로 검증 없으면 -1
3) 0이 있으면 각 자리수 합과 3을 나눠 나머지가 0이면 된다!
'알고리즘 > 백준' 카테고리의 다른 글
2667번 단지번호붙이기 (0) | 2022.07.17 |
---|---|
1406번 에디터 (0) | 2022.07.05 |
2750번: 수정렬하기2 (0) | 2022.07.04 |
13305번 주유소 (0) | 2022.06.30 |
1931번: 회의실 배정 (0) | 2022.06.28 |