반응형
#include
#include
#include
#include
using namespace std;
int main()
{
int caseNum;
cin>>caseNum;
vector s;
vector c;
for(int i=0;i<caseNum;i++){
string temp;
cin>>temp;
for(int j=0;j<temp.length();j++){
c.push_back(temp[j]);
}
s.push_back(temp);
}
sort(c.begin(),c.end());
c.erase(unique(c.begin(),c.end()),c.end());
vector ind;
for(int i=0;i<c.size();i++){
ind.push_back(9-i);
}
int maxNum = -1;
do{
int total = 0;
for(int i=0;i<s.size();i++){
string temp = s[i];
int ja = 1;
for(int j=temp.length()-1;j>=0;j--){
//같은 수면
for(int k=0;k<c.size();k++){
if(temp[j] == c[k]){
total += ja*ind[k];
break;
}
}
ja = ja*10;
}
}
maxNum = max(maxNum,total);
}while(prev_permutation(ind.begin(),ind.end()));
cout<<maxNum<<endl;
return 0;
}
https://www.acmicpc.net/problem/1339
1339번: 단어 수학
첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 10개이고, 수의 최대 길이는 8이다. 서로 다른 문자는 서로 다른 숫자를 나타낸다.
www.acmicpc.net
반응형
'개발자 > 알고리즘' 카테고리의 다른 글
[BOJ] 2580번 스도쿠 (0) | 2019.10.15 |
---|---|
[BOJ] 14889번 스타트와 링크 (0) | 2019.10.13 |
[BOJ] 1748번 수 이어 쓰기1 (0) | 2019.10.13 |
[BOJ] 1261번 알고스팟 -deque (0) | 2019.10.12 |
[BOJ] 13549번 숨바꼭질3 (0) | 2019.10.11 |