문제
https://www.acmicpc.net/problem/1339
풀이
ABC + CE
= (A*100 + B*10 + C) + (C*10 + D)
= A*100 + B*10 + C*11 + D
이렇게 나타낼 수 있다는 점에 집중해서 문제를 풀었다.
각 문자가 위치한 자리수들을 저장해놓은 후, 자리수 기준으로 정렬을 하고 큰 자리수를 가지는 문자에 큰 수를 할당하는 방식으로 풀었다.
위의 예에서는 [A:100, C:11, B:10, D] 순으로 큰 자리수를 가지고 있으므로, A=9, C=8, B=7, D=6을 할당하면 그 합을 가장 크게 만들 수 있게 된다.
N = int(input())
words = []
for _ in range(N) :
words.append(input())
word_dic = {}
for word in words :
n = len(word)
for idx, alpha in enumerate(word) :
if alpha in word_dic :
word_dic[alpha] += 10**(n-idx-1)
else :
word_dic[alpha] = 10**(n-idx-1)
word_num = sorted(word_dic.values(), reverse = True)
answer = 0
num = 9
for i in range(len(word_num)) :
answer += word_num[i] * num
num -= 1
print(answer)
728x90