https://www.acmicpc.net/problem/1339
정답코드
import sys
input = sys.stdin.readline
n = int(input())
alphabet = {}
a = [input().rstrip() for _ in range(n)]
for i in a:
x = len(i)-1
for j in i:
if j in alphabet:
alphabet[j] += 10**x
else:
alphabet[j] = 10**x
x -= 1
sort_values = sorted(alphabet.values(), reverse=True)
result = 0
num = 9
for k in sort_values:
result += k*num
num -= 1
print(result)
처음에는 단순히 자릿수가 높은 알파벳을 높은 숫자로 변환해준다고 생각했는데, 중복되는 알파벳 처리나 단어의 수가 달라질 수 있다는 점에서 코드를 짜기 어려웠다. 생각해보니 어떤 알파벳이 어떤 수를 가졌는지는 저장하지 않아도 상관없고, 어떤 자릿수에 있느냐가 중요한 점이었다. 알파벳의 자릿수에 해당되는 숫자를 모두 더한 후에 더한 값이 큰 것부터 차례로 숫자를 할당해주고, 이를 모두 더하면 답이 나온다.