ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가르침
    백준알고리즘 2019. 8. 26. 00:41
    int go(int index, int k, int mask, vector<int> &words) {
        if (k < 0) return 0;
        if (index == 26) {
            return count(mask, words);
        }
        int ans = 0;
        int t1 = go(index+1, k-1, mask | (1 << index), words);
        if (ans < t1) ans = t1;
        if (index != 'a'-'a' && index != 'n'-'a' && index != 't'-'a' && index != 'i'-'a' && index != 'c'-'a') {
            t1 = go(index+1, k, mask, words);
            if (ans < t1) ans = t1;
        }
        return ans;
    }

    계속 시간초과나서 풀지못한문제,

    비트마스크로 하는 풀이가 있는데, 굉장히 좋은방법이라 생각한다.

    재귀함수 통해서 계속 계속 가지만, 비트마스크 조건에 따라 단어만 체크하고 하기떄문에

    문장을 체크하는 번거로움을 피할수있고, 시간단축, 코드단축 두마리토끼를한번에잡을수있는듯..

    브루트포스 문제풀어보면서 비트마스크로 문제를 풀어본적이 사실 경험이 많지않은데

    이번 기회를 통해, 굉장히 좋은 풀이방법중 하나라는것을 깨닫는다.

    '백준알고리즘' 카테고리의 다른 글

    비숍  (0) 2019.08.27
    불!  (0) 2019.08.26
    수들의 합 2  (0) 2019.08.26
    부분합  (0) 2019.08.26
    나이트의 이동  (0) 2019.08.14

    댓글

Designed by Tistory.