본문 바로가기
PS(구 C++)

백준 1062 가르침 C++

by 같이긍뱅와 2022. 1. 30.
#include <bits/stdc++.h>
using namespace std;
int n, k, ans;
bool alpha[26];
vector<string> v;

int canReadNum(){
    bool read;
    int cnt = 0;
    for(int i = 0; i < v.size(); i++){
        read = true;
        string word = v[i];
        for(int j = 0; j < word.length(); j++){
            if(alpha[word[j] - 'a'] == false){
                read = false;
                break;
            }
        }
        if(read) cnt++;
    }
    return cnt;
}
void DFS(int idx, int cnt){
    if(cnt == k){
        ans = max(ans, canReadNum());
        return;
    }
    for(int i = idx; i < 26; i++){
        if(alpha[i]) continue;
        alpha[i] = true;
        DFS(i, cnt+1);
        alpha[i] = false;
    }
}
void solve(){
    alpha['a'- 'a'] = true;
    alpha['n'- 'a'] = true;
    alpha['t'- 'a'] = true;
    alpha['i'- 'a'] = true;
    alpha['c'- 'a'] = true;
    k -= 5;
    DFS(0, 0);
    cout << ans;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> k;
    string inp;
    for(int i = 0; i < n; i++){
        cin >> inp;
        v.push_back(inp);
    }
    if(k < 5){
        cout << 0;
        return 0;
    }
    solve();
}

'PS(구 C++)' 카테고리의 다른 글

백준 1194 달이 차오른다, 가자. C++  (0) 2022.01.30
백준 17471 게리멘더링 C++  (0) 2022.01.30
백준 1726 C++  (0) 2022.01.30
백준 3055 탈출 C ++  (0) 2022.01.27
백준 17090 C++  (0) 2022.01.27

댓글