import sys
input=sys.stdin.readline
dic={}
alp_num={}
list=[]
sum=0
N=int(input())
for _ in range(N):
alp=input()
length=len(alp)
list.append([alp,length-1])
for i in range (length-1):
if alp[i] in dic:
dic[alp[i]]+=10**(length-2-i)
else:
dic[alp[i]]=10**(length-2-i)
sort_dic = sorted(dic.items(), key = lambda item: item[1], reverse=True)
for i in range (len(sort_dic)):
alp_num[sort_dic[i][0]]=9-i
for i in range(N):
for j in range(list[i][1]):
sum+=alp_num.get(list[i][0][j])*(10**(list[i][1]-j-1))
print(sum)
아이디어
구현
첫번째 for문에서는 단어를 입력받으면서 가중치를 계산한다. 이때 이 단어는 나중에 계산할때 쓰이므로 list에 단어와 길이를 저장한다. 가중치는 딕셔너리를 이용하였는데, key에는 알파벳, value에는 가중치를 넣었다.
가중치가 큰 순서대로 정렬을 해준다.
다시 딕셔너리 alp_num을 사용해서 key값에는 알파벳 value에는 대입할 숫자를 넣어준다.
alp_num을 이용해서 값을 구해준다.