Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

혼종 꼬지마루

[백준] 9997 - 폰트 본문

Algorithms/DFS

[백준] 9997 - 폰트

꼬지마루 2018. 8. 31. 14:07

예전 삼성전자 SW Test A형을 딸 때 풀었던 문제랑 비슷해보여서 같은 방법으로 접근했다가 시간초과 났던 문제...


그래서 갯수에 상관없이 비트마스킹 + DFS를 사용하면 되는문제


순서에 상관이 없다는 말이 순서가 바껴도 같은 걸 사용하면 답의 갯수에 추가되는줄 알고 순열로 넣었다가 25!, 아니 예시인 9개에서도 시간초과


그래서 그냥 한 단어를 넣고, 안넣고 두가지 DFS로 문제 해결


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <cstring>
using namespace std;
 
int check[12], visit[12];
char A[102];
int N, com;;
long long dab;
 
void dfs(int d, int sum)
{
    if (d == N - 1)
    {
        if (sum == com) dab++;
        return;
    }
    if (d + < N)
    {
        dfs(d + 1, sum | check[d + 1]);
        dfs(d + 1, sum);
    }
}
 
int main(void)
{
    cin >> N;
    for (int i = 0; i < 26; i++) com |= << i;
 
    for (int i = 0; i < N; i++)
    {
        cin >> A;
        for (int j = 0; j < strlen(A); j++)
            check[i] |= (1<<(A[j] - 'a'));
    }
    dfs(-10);
    cout << dab << endl;
}
cs

'Algorithms > DFS' 카테고리의 다른 글

[SWEA] 4223 - 삼성이의 트라우마  (0) 2018.09.08
[백준] 14889 - 스타트와 링크  (0) 2018.09.07
[백준] 1208 - 부분집합의 합2  (0) 2018.08.29
[백준] 15660 - 테트로미노(2)  (1) 2018.08.28
[백준] 14500 - 테트로미노  (0) 2018.08.28