Posts [알고리즘] 백준 10610 - 30
Post
Cancel

[알고리즘] 백준 10610 - 30


문제

10610 - 30


접근

그리디 알고리즘이다.

우선 30의 배수가 되려면 3의 배수인 동시에 10의 배수가 되어야 한다.

따라서, 3의 배수를 만족하기 위해 각 자리 수의 합이 3으로 나누어 떨어지는지 확인하고, 0이 한개라도 존재하는지 확인한다.

조건을 모두 만족한 경우에, 작은 수부터 뒷자리에 채워넣으면 된다.

코드

  • 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
n = list(str(int(input())))
arr = [0] * 10
zeroCheck = False
sumCheck = 0
for item in n:
    num = int(item)
    arr[num]+=1
    if num == 0:
        zeroCheck = True
    sumCheck += num
if sumCheck % 3 != 0 or not zeroCheck:
    print(-1)
else:
    ans = ''
    for i in range(10):
        if arr[i]:
            ans = (str(i) * arr[i]) + ans
    print(int(ans))


This post is licensed under CC BY 4.0 by the author.

Recommendation System

[알고리즘] 백준 1427 - 소트인사이드