티스토리 뷰

 

10610번: 30

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한

www.acmicpc.net


1. 문제 내용

 

 

2. 접근 방식

  • 미르코가 만들고 싶어하는 수가 존재하지 않는 경우?

가장 기본적으로 30의 배수는 무조건 일의 자리 숫자가 0이다. 따라서 입력 받은 수에 0이 없다면 무조건 -1이 출력되어야 한다.

 

  • 입력받은 수의 숫자를 가장 큰 순으로 재배치한 후 30으로 나눈다.

즉, 입력 받은 수가 2104라면 각 숫자는 2, 1, 0, 4이고, 이를 큰 순으로 배치하면 4210이다. 이렇게 새로 구한 숫자가 30의 배수인지 확인한다.

 

 

3. 정답 코드

  • list(<문자열>): 숫자(문자열)을 각 digit(문자열)로 이뤄진 리스트로 변환 ex) '102' => ['1', '0', '2']
  • '<특정 구분자>'.join(<리스트>): 리스트를 특정 구분자를 포함하여 문자열로 변환
n = input()

if '0' not in n:
    print(-1)

else:
    number = ''.join(sorted(list(n), reverse=True))

    if int(number) % 30 == 0:
        print(number)
    else:
        print(-1)
728x90