1062 : 가르침

풀이

그냥 완전탐색하면 된다

근데 그냥 하면 시간 초과가 난다

앞뒤에 anta tica를 제거하고 잘 돌려야 한다

코드

#include <bits/stdc++.h>
using namespace std;

int n, k, dap, a[55];
char s[55];

int main() {
    scanf("%d %d", &n, &k);
    for (int i = 0; i < n; i++) {
        scanf("%s", s);
        for (int j = 0; s[j]; j++) a[i] |= (1<<(s[j]-'a'));
    }

    int x = (1<<0)|(1<<2)|(1<<8)|(1<<13)|(1<<19);
    for (int i = x; i < (1<<26); i++) {
        if (__builtin_popcount(i|=x) != k) continue;
        int cnt = 0;
        for (int j = 0; j < n; j++) cnt += ((i&a[j])==a[j]);
        dap = max(dap, cnt);
    }

    printf("%d\n", dap);

    return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2019-05-19 23:41

Read more posts by this author