- toc {:toc}
νμ΄
κ°μ₯ μ΅λκ°μ λ§λ€κΈ° μν΄μ κ° μνλ²³λ§λ€ μ΄λ»κ² 1~9 μ¬μ΄μ μ«μλ₯Ό λ°°μ ν΄μ€ κ²μΈκ°μ λν λ¬Έμ μ΄λ€. μ΅λκ°μ λ§λλλ° κ°μ₯ μ€μ μ μΈ λΆλΆμ μλ¦Ώμμ΄λ―λ‘ ν΄λΉ λΆλΆμ μ€μ μ μΌλ‘ μκ°νλ€.
- μμ΄λμ΄1
- μλ¦Ώμ(size)λ§λ€ κ°μ€μΉλ₯Ό λ¬μΌνλ€κ³ μκ°νλ€.
- μλ¦Ώμ μ κ³±μΌλ‘ μνλ²³λ§λ€ κ°μ€μΉλ₯Ό μ£Όκ³ λμ μνλ²³λΆν° μ«μ 9μμ 1κΉμ§ μμ°¨μ μΌλ‘ λΆμ¬νλ€.
- λ¬Έμ : κ°μ€μΉ μ μ©μ΄ μ¬λ°λ₯΄μ§ μμ λ°λ‘κ° μ‘΄μ¬νλ€.
- ex) 10, ABB, BC, BC, BC, BC, BC, BC, BC, BC, BC
- Aμ κ°μ€μΉ : 9, Bμ κ°μ€μΉ : 41, Cμ κ°μ€μΉ : 9
- μ΅λκ° μλ κ°μ΄ λμ¨λ€.
#include <bits/stdc++.h>
using namespace std;
char alpha_num[30];
pair<char, int> alpha_scores[30];
bool compare(const pair<char, int>& a, const pair<char, int>& b){
return a.second > b.second;
}
int main(){
ios:: sync_with_stdio(false);
cin.tie(0);
vector<string> words;
int N, res = 0;
char num = '9';
string str, temp;
cin >> N;
for(int i = 0; i < N; i++){
cin >> str;
int size = str.size()-1;
words.push_back(str);
for(int j = 0; j < str.size(); j++){
alpha_scores[str[j]-'A'].first = str[j];
alpha_scores[str[j]-'A'].second += (size+1)*(size+1);
size--;
}
}
sort(alpha_scores, alpha_scores+26, compare);
for(int i = 0; i < 27; i++){
if(alpha_scores[i].second == 0) continue;
alpha_num[alpha_scores[i].first-'A'] = num--;
}
for(int i = 0; i < words.size(); i++){
temp = "";
for(int j = 0; j < words[i].size(); j++){
temp += alpha_num[words[i][j]-'A'];
}
res += stoi(temp);
}
cout << res << '\n';
return 0;
}μμ΄λμ΄ 1μ κ°μ€μΉλ₯Ό μ¬μ©νλ©΄ λ°±μ μ리μ μΌμ μλ¦¬κ° μλ‘ κ°κ² λκΈ°μ κ°μ€μΉ μν μ μννμ§ λͺ»νλ€. μλ¦Ώμλ³λ‘ κ°μ€μΉμ μ°¨μ΄λ₯Ό νμ€νκ² λ¬μΌ νλ€.
- μμ΄λμ΄ 2
- μκ°ν΄λ³΄λ κ°μ€μΉλ₯Ό μ κ³± ννλ‘ μ€ νμκ° μλ€. κ·Έλ₯ μλ¦Ώμλλ‘ κ°μ€μΉλ₯Ό μ£Όλ©΄ λλ€.
- ex) 10, ABB, BC, BC, BC, BC, BC, BC, BC, BC, BC
- λ°±μ μ리λ 100, μμ μ리λ 10, μΌμ μ리λ 1λ‘ κ°μ€μΉλ₯Ό μ μ©νλ€.
- 100A, 101B, 9C
#include <bits/stdc++.h>
using namespace std;
pair<char, int> alpha_scores[30];
bool compare(const pair<char, int>& a, const pair<char, int>& b){
return a.second > b.second;
}
int main(){
ios:: sync_with_stdio(false);
cin.tie(0);
vector<string> words;
int N, res = 0;
int num = 9;
string str, temp;
cin >> N;
for(int i = 0; i < N; i++){
cin >> str;
int size = str.size()-1;
words.push_back(str);
for(int j = 0; j < str.size(); j++){
alpha_scores[str[j]-'A'].first = str[j];
alpha_scores[str[j]-'A'].second += pow(10, size--);
}
}
sort(alpha_scores, alpha_scores+26, compare);
for (int i = 0; i < 27; i++){
if(alpha_scores[i].second == 0) continue;
res += alpha_scores[i].second * num--;
}
cout << res << '\n';
return 0;
}