예로 AZ와 ZZ라는 두 단어가 주어진다면,
arr[A] = 10*1(첫번째 단어)
arr[Z] = 1*1(첫번째 단어) + 10*1(두번째 단어) + 1*1(두번째 단어)
다음과 같이 우선순위(?)를 계산해줄 수 있다.
이후에 우선순위를 내림차순으로 정렬하고 우선순위가 가장 큰 것부터 9~0의 가중치를 차례대로 대입하면 된다.
#include <bits/stdc++.h>
using namespace std;
int main() {
std::ios::sync_with_stdio(false);
int N;
int sum = 0;
int arr[26] = {0};
string words[10];
cin >> N;
for(int i = 0; i < N; i++) {
cin >> words[i];
for(int c = 0; c < words[i].length(); c++) {
arr[words[i][c] - 'A'] += pow(10, words[i].length() - c - 1);
}
}
sort(arr, arr + 26, greater<int>());
for(int i = 0; i < 10; i++)
sum += arr[i] * (9 - i);
cout << sum;
}