반응형
https://www.acmicpc.net/problem/10610
문제
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다.
미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라.
입력
N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.
출력
미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라.
풀이
배수판정법을 알고있다면 어렵지 않게 풀 수 있는 문제였다
https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%88%98_%ED%8C%90%EC%A0%95%EB%B2%95
30의 배수를 만들기 위해서는 모든 자리의 숫자의 값이 30의 배수가 되어야 하는데
예제 30의 경우
3 + 0 = 3으로 0의 자리는 더해지지 않기 때문에 30의 배수가 될 수 없다
그래서 3의 배수를 구한 후 받은 값에 '0'이 있는지 아닌지 판별하여 30의 배수인지 아닌지 구할 수 있었다.
python코드
# 10610 30
N = list(input())
hap = 0
for i in N:
hap += int(i)
if '0' in N:
if hap % 3 != 0:
print(-1)
else:
N.sort()
N.reverse()
for i in range(len(N)):
print(N[i],end='')
else:
print(-1)
반응형
'study > 백준' 카테고리의 다른 글
[백준] 11866. 요세푸스 문제 0 : python (0) | 2022.08.10 |
---|---|
[백준] 1715. 카드 정렬하기 : python (0) | 2022.08.07 |
[백준] 1920. 수 찾기 : python (0) | 2022.08.04 |
[백준] 5430. AC : python (0) | 2022.07.31 |
[백준] 11651. 좌표 정렬하기 2 : python (0) | 2022.07.31 |