728x90
시간 제한 1초, 메모리 제한 256MB
# 조건
- 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다.
- 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다.
- 마르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라.
입력
- N을 입력받는다.
- N는 최대 10^5개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.
출력
- 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라.
- 그 수가 존재하지 않는다면, -1을 출력하라.
# 접근 방법
- 우선 30의 배수가 되기 위해서는 1의 자리는 0이 되어야 한다.
- 0이 없는 경우 -1을 출력해주고
- 0이 존재하는 경우 나머지 수들의 합이 3의 배수가 되면 된다.
- 나머지 수들의 합이 3의 배수가 되었고, 일의 자리가 0이라면, 30의 배수가 가능하므로 가장 큰 수부터 정렬하면 된다.
import sys
sys.stdin = open('input.txt')
input = sys.stdin.readline
num = input().rstrip()
if not '0' in num:
print(-1)
else:
temp = 0
for i in range(len(num)):
temp += int(num[i])
if temp % 3 == 0:
print(int(''.join(sorted(num, reverse=True))))
else:
print(-1)
728x90
'ALGORITHM > 정렬, 탐색,구현' 카테고리의 다른 글
[백준 17837번] 파이썬 - 새로운 게임 2 (0) | 2023.07.13 |
---|---|
[백준 17780번] 파이썬 - 새로운 게임 (0) | 2023.07.13 |
[프로그래머스 Lv2] 파이썬 - 영어 끝말잇기 (0) | 2023.07.08 |
[프로그래머스 Lv2] 파이썬 - 모음사전 (0) | 2023.07.06 |
[프로그래머스 Lv 3] 파이썬 - 인사고과 (0) | 2023.07.05 |