본문 바로가기
Algorithm/BOJ

[BOJ] 백준 10610번 Python

by CodeChronicle 2025. 2. 5.
728x90
반응형

백준 10610번 Python

https://www.acmicpc.net/problem/10610

 

문제


어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다.

미르코는 30이란 수를 존경하기 때문에,

그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어 한다.

미르코를 도와 그가 만들고 싶어 하는 수를 계산하는 프로그램을 작성하라.

 

 

입력


N을 입력받는다. N는 최대 105 개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.

 

 

출력


미르코가 만들고 싶어 하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라.

 

반응형

풀이


import sys
input = sys.stdin.readline


def check(num):
    if sum(map(int, num)) % 3 != 0:
        return False
    if num[-1] != '0':
        return False
    return True

N = list(input().rstrip())
N.sort(reverse=True)

if not check(N):
    print(-1)
else:
    print(*N, sep='')

 

728x90

30의 배수가 되는 조건을 이해하면 쉽게 풀 수 있다.

 

일단 30의 배수가 되려면 1의 자릿수가 0이 되어야 한다는 것이 첫 번째 조건이다.

 

두 번째 조건으로는 3의 배수의 특성을 이용할 것이다.

 

30의 배수는 곧 3의 배수임을 알 수 있다.

 

이 두 가지 조건을 만족하는 모든 수는 30의 배수이다.

 

마지막으로 정렬을 통해 가장 큰 수를 구하면 문제를 해결할 수 있다.

728x90
반응형

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 백준 15975번 Python  (0) 2025.01.18
[BOJ] 백준 23802번 Python  (0) 2025.01.17
[BOJ] 백준 12971번 Python  (0) 2025.01.14
[BOJ] 백준 1912번 Python  (0) 2025.01.10
[BOJ] 백준 2577번 Python  (0) 2025.01.09