기타지식들/알고리즘

브루트 포스법이란?

원원 2020. 9. 6. 19:41

안녕하세요. 오늘은 문자열을 검색하는 알고리즘중에 하나인 브루트 포스법(brute force method)에 대해 알아보겠습니다


문자열검색이란 어떤 문자열이 있으면 그 안에 다른 문자열이 있는지 검사하는 방법을 뜻합니다


ADDABC라는 문자열이 있고 ABC를 검색해보면 검색 성공입니다.


ADDABC를 텍스트(TEXT) 라고 하고 ABC를 패턴(PATTERN)이라고 하겠습니다.



문자열 하나씩 옮기다보면 4번째 트라이에 ABC가 일치합니다


이처럼 브루투포스법은 비효율적이고 반복적입니다





실행Colored By Color Scripter

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
#include <stdio.h> 
 
 
int main(void
    char *ch = "ADDABC";
    int i;
    
    for(i=0; i<4 ; i++)
     {
         if(*(ch+i) == 'A')
         {
             if(*(ch+i+1) == 'B')
             {
                 if(*(ch+i+2) == 'C')
                 {
                     printf("일치");
                     break;
                }
            }
        }
        
        if(i==3)
            printf("불일치");
    }
    
}


실행 : 일치


6번째줄 : ch는 텍스트입니다


11번째줄 : i<4인 이유는 4번만 반복하면 다 반복하는것 이기 때문입니다


9번째줄~21번째줄 : A,B,C가 있으면 일치입니다


23번째줄 : i == 3 일때, 11번째줄 if문을 지나서 23번째줄 if문에 왔다는거는 불일치라는 의미입니다