알파벳으로 이루어진 단어들이 주어질 때 각 알파벳을 0~9까지의 숫자중 하나로 바꾸어서 다 더한 값이 최대가 되도록 하세요
사이즈가 26(A부터 Z까지 알파벳 갯수)인 1차원 배열을 생성하여 0으로 초기화 시켜놓고, 주어진 단어에서 각 알파벳마다 자릿수를 곱한 뒤 배열에 그 값을 더해준다.
예를 들면
"AAA" 라는 단어가 주어진다면
100xA + 10xA + 1xA = 111A이므로 1차원 배열에서 A의 위치인 0의 자리에 111을 더해준다.
해당 과정이 끝난 후, 문제에서 주어진 알파벳은 최대 10개라고 하였으므로 1차원 배열을 내림차순 정렬로 정렬한뒤 index 0~9까지만 탐색을 한다. 가장 큰 자릿수값을 가진 알파벳이 0번째 index에 있을 것이므로 해당 알파벳은 9로 바꾸면 가장 큰 값이 나온다. 1번째 index는 8로 바꾸고 2번째는 7..... 9번째는 0을 부여한다.
import sys
r = sys.stdin.readline
N = int(r())
alpha = [[0 for col in range(2)] for row in range(26)]
for i in range(26):
alpha[i][0] = ord('A') + i
for i in range(0, N):
input = r().rstrip()
for idx, j in enumerate(input):
loc = len(input) - idx - 1
alpha[ord(j)-ord('A')][1] += (10 ** loc)
alpha.sort(key=lambda x:x[1], reverse=True)
num = 9
sum = 0
for i in range(10):
sum += (alpha[i][1] * num)
num -= 1
print(sum, end='')