성장일기
[python] 백준 10610 - 30 본문
입력받은 숫자들을 섞어
30의 배수가 되는 가장 큰 수 출력하기
존재하지 않으면 -1 출력
🧨1. 30의 배수 조건: 0이 존재하고, 각 자리의 합이 3의 배수
2. 자릿수만큼 10 곱해주기(시간초과)
-> 그냥 join해주자(¬_¬ )(허탈)
<시간초과 코드>
import sys
input=sys.stdin.readline
num=list(map(int,input().rstrip()))
num=sorted(num,reverse=True) #내림차순 sorting
# 30의 배수 : 모든 자리 수의 합이 3의 배수, 0이 하나 이상
#print(num)
if 0 in num: #0이 리스트에 있고
if sum(num)%3==0: #3으로 나눠지면
temp=0
for i in range(len(num)-1):
temp+= num[i] * (10**(len(num)-(i+1))) #ㅎㅎ,,
print(temp)
else:
print(-1)
else:
print(-1)
<정답>
import sys
input=sys.stdin.readline
num=list(map(int,input().rstrip()))
#num=sorted(num,reverse=True)
# 30의 배수 : 모든 자리 수의 합이 3의 배수, 0이 하나 이상
#print(num)
if 0 in num:
if sum(num)%3==0:
num=sorted(num,reverse=True) #되는것만 sort해주는 걸로 바꿈
print(''.join(map(str,num))) #붙이기
else:
print(-1)
else:
print(-1)
<남자친구코드> - 메모리 덜든다😂
import sys
input=sys.stdin.readline
num=list(map(int,input().rstrip()))
cnt_arr=[0 for i in range(10)]
zero_check=False
sum_arr=0
result=''
for n in num:
sum_arr+=n
if n==0:
zero_check=True
cnt_arr[n]+=1
if zero_check and sum_arr %3==0:
for i in range(9,-1,-1):
result=result+(str(i)*cnt_arr[i])
print(result)
else:
print(-1)
'알고리즘 문제' 카테고리의 다른 글
[python] 백준 5430 - AC (0) | 2022.01.08 |
---|---|
[python] 백준 1037 - 약수 (0) | 2022.01.07 |
[python] 백준 1026 - 보물 (0) | 2022.01.06 |
[python] 백준 2164 - 카드 2 (0) | 2022.01.05 |
[python] 백준 7785 - 회사에 있는 사람 (0) | 2022.01.01 |