Page 320 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 320

08-2  브루트-포스법









                   이번에는 문자열에서 문자열을 검색하는 알고리즘인 브루트-포스법(brute force method)을
                   살펴보겠습니다.




                   문자열 검색이란?

                   이제는 본격적으로 문자열을 검색하는(string                           S T R  I  N G  문자열 원본(텍스트)
                   searching) 알고리즘에 대해 알아보겠습니다. 문                            I  N  검색할 문자열(패턴)
                   자열 검색이란 어떤 문자열 안에 다른 문자열이
                                                               해당 문자열 패턴(IN)을 문자열 원본(STRING)에서 검색합니다.
                   들어 있는지 조사하고 들어 있다면 그 위치를 찾                            [그림 8-9] 문자열 검색
                   아내는 것을 말합니다.



                   예를 들어, 문자열 "STRING", "KING"에서는 "IN"을 검색하면 문자열 검색에 성공합니다. 하
                   지만 문자열 "QUEEN"에서 "IN"을 검색하면 문자열 검색에 실패합니다. 그러면 지금부터는

                   이해하기 쉽게 검색할 문자열을 패턴(pattern)이라 하고 문자열 원본을 텍스트(text)라고 하겠
                   습니다.




                   브루트-포스법
                   다음 그림 8-10은 텍스트 "ABABCDEFGHA"에서 패턴 "ABC"를 브루트-포스법을 사용해
                   검색하는 순서를 간략하게 나타낸 그림입니다.



                    a  텍스트의 첫 문자 'A'부터 시작하는 3개의 문                    0  1  2  3  4  5  6  7  8  9  10
                                                                 a   A B A B C D E  F G H A
                   자와 "ABC"가 일치하는지 검사합니다. 'A'와 'B'                   A B C
                                                                           패턴의 3번째 문자가 다른 경우
                   는 일치하고 'C'는 다릅니다.


                    b  패턴을 1칸 뒤로 옮깁니다. 텍스트의 2번째                      0  1  2  3  4  5  6  7  8  9  10
                                                                 b   A B A B C D E  F G H A
                   문자부터 3개의 문자가 일치하는지 조사합니다.                           A B C
                                                                            패턴의 1번째 문자가 다른 경우
                   'A'와 'B'가 다릅니다.



                   320   C 알고리즘
   315   316   317   318   319   320   321   322   323   324   325