Python/Greedy BOJ-10610 30

[Python/Greedy] BOJ-10610 30

πŸ“Œλ¬Έμ œλ§ν¬ 풀이참고


*풀이참고 링크에 λ“€μ–΄κ°€μ…”μ„œ λ³΄μ‹œλ©΄ λ©λ‹ˆλ‹€.

μ£Όμ–΄μ§„ μˆ«μžλ“€ 쀑에 μ΅œλŒ€ 30의 배수λ₯Ό μ°ΎλŠ” λ¬Έμ œλ‹€.
숫자λ₯Ό λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œ ν›„, 30배수 μ—¬λΆ€λ₯Ό νŒλ‹¨ν•˜λ©΄ λœλ‹€.


solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys
input = sys.stdin.readline
N = list(input().rstrip())
30
N = sorted(N, reverse=True)
sum = 0
if '0' not in N : # 0이 μ—†λ‹€λ©΄ 30λ°°μˆ˜κ°€ 될수 μ—†μŒ
    print(-1)
else :
    for i in N : # 각 숫자λ₯Ό λ‹€ λ”ν–ˆμ„λ•Œ 3의 λ°°μˆ˜κ°€ λ˜μ–΄μ•Όν•¨
        sum += int(i)
    if sum % 3 != 0:
        print(-1)
    else :
        print(''.join(N))

μ‹œκ°„μ΄ˆκ³Ό 풀이

생각없이… 막 μ§œμ§€λ§μž ^_^

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import sys
input = sys.stdin.readline

N = list(input().rstrip())
numlist = [int(i) for i in N]
numlist = sorted(numlist, reverse=True)
maxv='';result = 0
for j in range(len(numlist)) :
    if j > 0 :
        if (maxv % 30) == 0 : 
            result = maxv 
            break
        maxv=''
        numlist = numlist[1:] + [numlist[0]]    
    for i in numlist:
        maxv+=str(i) 
    maxv = int(maxv)
print(-1 if result == 0 else result)

join ν•¨μˆ˜

join ν•¨μˆ˜λŠ” 리슀트 μš”μ†Œλ₯Ό ν•˜λ‚˜μ˜ λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•΄μ£ΌλŠ” ν•¨μˆ˜λ‹€.

'κ΅¬λΆ„μž'.join(리슀트)