반응형
1. 풀이
(1) 각 숫자의 계수를 구해준 후
(2) 계수가 가장 큰 숫자부터 9에서 0까지 차례대로 넣어준다.
이때 알파벳이 10개이상일 때(숫자 0까지 써야할 때) 첫째자리에 있는 숫자가 0이되지 않도록 주의한다.
ex)
(1) 숫자의 계수 구하기
ABC : 100A+10B+C
BCA : 100B+10C+A
총합 => 101A+110B+11C
(2)계수가 가장 큰 수부터 9에서 0까지 차례대로 넣기.
정렬하면 => 110B,101A,11C
계수가 큰 수 부터 9씩 넣기 (B=9, A=8, C=7)
※참고 : [boj]1339 단어수학
2. 소스코드
N=int(input())
gasoo=[[0,"A"],[0,"B"],[0,"C"],[0,"D"],[0,"E"],
[0,"F"],[0,"G"],[0,"H"],[0,"I"],[0,"J"],]
neverZero=[0 for i in range(10)]
for i in range(N):
word=input()
size=len(word)
for j in range(size):
index=ord(word[size-1-j])-65
if j==size-1:
neverZero[index]=1
gasoo[index][0]+=10**j
gasoo.sort(reverse=True)
# 0이 안되는거 확인(0까지 쓰일때만)
if gasoo[9][0]!=0:
for i in range(9,-1,-1):
if neverZero[ord(gasoo[i][1])-65]==0:
temp=list(gasoo[i])
gasoo.remove(temp)
gasoo.append(temp)
break
ans=0
for i in range(10):
ans+=gasoo[i][0]*(9-i)
print(ans)
반응형