상세 컨텐츠

본문 제목

백준 1339 단어 수학 혼내주기

혼내주기

by lazz 2021. 8. 1. 22:53

본문

반응형

 

지이이이ㅣ이인짜 많이 헤맸는데, 결과적으론 처음 짠 코드에서 index 처리를 잘 못해서 지구 한바퀴 돈 셈이다. 우울하다 진짜...

 

#include <bits/stdc++.h>
#define fastio ios::sync_with_stdio(0), cin.tie(0)
using namespace std;

string arr[10];
bool check[26];
char alphabet[10];
int match[26];
int n, ans = 0, tot = 0;

void input() {
    fastio;
    cin >> n;
    for(int i = 0; i < n; ++i) {
        cin >> arr[i];
        for(int j = 0; j < arr[i].size(); ++j) {
            if(check[arr[i][j] - 'A']) continue;
            check[arr[i][j] - 'A'] = true;
            alphabet[tot++] = arr[i][j];
        }
    }
}

int getNum(string& s) {
    int ret = 0;
    for(char& c : s){
        ret *= 10;
        ret += match[c - 'A'];
    }
    return ret;
}

void d(int visited, int cnt) {
    if(visited == (1 << tot)-1) {
        int sum = 0;
        for(int i = 0; i < n; ++i) {
            sum += getNum(arr[i]);
        }
        ans = max(ans, sum);
    }

    for(int i = 0; i < tot; ++i) {
        if(visited & (1 << i)) continue;
        match[alphabet[i] - 'A'] = cnt;
        d(visited | (1 << i), cnt-1);
    }
}

int main() {
    input();
    d(0, 9);
    cout << ans;
}
반응형

관련글 더보기

댓글 영역