[백준] 10610번 : 30 (파이썬)

뚝딱이 공학도·2022년 2월 28일
0

문제풀이_백준

목록 보기
73/160



문제



나의 답안

n=input()
#30의 배수? 각 자리의 합이 3의 배수(3으로 나뉘면 됨)&일의자리가 0으로 끝나야함
n=sorted(n,reverse=True)
total=0 #각 자리의 합을 저장할 변수 total을 초기화

if '0' not in n:
    print(-1)
else:
    for i in n:
        total+=int(i)
    if total%3!=0:
        print(-1)
    else:
        print(''.join(n))

접근방법

  • 문제에서 30의 배수가 되는 가장 큰 수를 만들고 싶어한다 라고 하였으므로, 내림차순으로 정렬이 필요하다.
  • 30의 배수3의 배수이면서 일의 자리가 0인 수이다.
  • 3의 배수는 각 자리 숫자의 합이 3의 배수인 수이다.
  • 0이 없을 경우, 0이 있으나 3의 배수가 아닌 경우는 모두 -1을 출력한다.
  1. sorted(n,reverse=True)로 입력받은 문자열을 내림차순으로 정렬한다.
  2. 만약 문자열 안에 0이 없다면 -1을 출력한다.
  3. 0이 있는 경우, 각 자리의 합을 더한다.
  4. 각 자리의 합이(total) 3의 배수가 아니라면 -1을 출력한다.
  5. 3의 배수라면 join을 사용해 배열의 문자열을 합쳐준다.


join

join 함수는
배열에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환하는 함수이다.

  • ''.join(배열)
    ex) ''.join(['a','b']) => 'ab'
  • '구분자'.join(배열)
    ex '='.join(['a','b']) => 'a=b'

0개의 댓글