본문 바로가기
개발자/알고리즘

[BOJ] 1339번 단어수학

by D , 2019. 10. 13.
반응형


#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