백준 문제 링크
단어 수학
- ABCDE의 경우 A에 가장 큰 수를 매칭하는 것이 좋으므로, 각 알파벳의 자리수를 결정해준다. (A = 10^4, B = 10^3, ... E = 10^0)
- 알파벳이 딕셔너리에 없으면 1번처럼 하고, 있으면 딕셔너리의 값에 더해준다.
- 자리수의 값들을 내림차순으로 정렬하고, 0~9 까지의 숫자를 각 인덱스에 맞는 값과 곱해준다. (여기서 0~9 숫자를 내림차순으로 곱해야 가장 큰 값을 구할 수 있다)
n = int(input())
s = 0
num_list = [i for i in range(9,-1,-1)]
# 0~9를 내림차순으로 정렬
alpha_list = [] # 단어를 넣을 리스트
alpha_dic = {} # 알파벳에 해당하는 자리수 값을 넣을 딕셔너리
for i in range(n):
x = input()
alpha_list.append(x)
for i in range(len(alpha_list)):
for j in range(len(alpha_list[i])):
if alpha_list[i][j] not in alpha_dic:
alpha_dic[alpha_list[i][j]] = 10 ** (len(alpha_list[i])-j-1)
else:
alpha_dic[alpha_list[i][j]] += 10 ** (len(alpha_list[i])-j-1)
# 앞에 나오는 알파벳부터 10의 n제곱, 10의 n-1제곱.. 순으로 곱해준다
sorted_alpha = sorted(alpha_dic.values(), reverse = True)
for i in range(len(sorted_alpha)):
s += sorted_alpha[i] * num_list[i]
print(s)