각 문자별로 계수를 구한 후, 계수가 큰 숫자부터 9, 8, 7, ...을 할당해준다.
문제의 예시를 예로 들면
2
GCF
ACDEB
A = 10,000
B = 1
C = 1,010
D = 100
E = 10
F = 1
G = 100
이고 숫자가 큰 문자부터 9, 8, 7, ... 을 할당해준다.
import sys
#sys.stdin = open('input.txt', 'r')
sys.setrecursionlimit(int(1e5))
input = sys.stdin.readline
N = int(input().rstrip())
char_value = {} # 계수의 문자를 매핑하는 딕셔너리
for _ in range(N):
s = input().rstrip()
# 문자의 뒷부분부터 시작
for i, c in enumerate(s[::-1]):
char_value[c] = char_value.get(c, 0) + 10 ** i
# numbers의 원소: [계수, 문자]
numbers = []
for char, value in char_value.items():
numbers.append([value, char])
numbers.sort(reverse=True) # 계수 내림차순으로 정렬
# 계수가 큰 수부터 9, 8, 7,... 할당하고 합계 계산
answer = 0
n = 9
for value, char in numbers:
answer += value * n
n -= 1
print(answer)