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

c  패턴을 다시 1칸 뒤로 옮깁니다. 'A', 'B',                  0  1  2  3  4  5  6  7  8  9  10
                                                                     c   A B A B C D E  F G H A
                        'C' 모두 일치합니다.                                       A B C
                                                                                 패턴의 모든 문자가 일치하는 경우

                                                                            [그림 8-10] 브루트-포스법
                        브루트-포스법은 선형 검색을 확장한 알고리즘이므로 단순법(單純法), 소박법(素朴法)이라고

                        도 합니다. 다음의 그림 8-11은 앞에서 살펴본 그림 8-10을 조금 더 자세히 나타낸 그림입
                        니다.



                        a  패턴이 텍스트의 첫 문자와 겹치도록 두 줄로                         0  1  2  3  4  5  6  7  8  9  10
                                                                    a  1   A  B  A  B  C  D  E  F  G  H  A
                        놓고 1번째 문자부터 순서대로 일치하는지 검사                          A  B  C 1번째 문자는 일치합니다.
                        합니다.  1 ,  2 처럼 문자가 일치하면 계속해서 패                     0   1  2
                        턴과 텍스트의 문자를 검사합니다. 그러다가  3 처                       0  ❶  2  3  4  5  6  7  8  9  10
                                                                       2   A  B  A  B  C  D  E  F  G  H  A
                        럼 다른 문자가 나타나면 검사를 중단합니다.
                                                                           A  B  C 2번째 문자도 일치합니다.
                                                                           0  ❶  2

                                                                           0  1  ❷  3  4  5  6  7  8  9  10
                                                                       3   A  B  A  B  C  D  E  F  G  H  A
                                                                           A  B  C 3번째 문자는 다릅니다.
                        b  검사할 텍스트의 위치를 1칸 뒤로 이동합니다.                       0  1  ❷
                        4 에서 볼 수 있듯이 1번째 문자부터 다릅니다. 검
                        사를 중단합니다.                                          0  ❶  2  3  4  5  6  7  8  9  10
                                                                    b  4   A  B  A  B  C  D  E  F  G  H  A
                                                                             A  B  C 1번째 문자는 다릅니다.
                                                                              0   1  2

                        c  조사할 텍스트의 위치를 1칸 뒤로 이동합니다.

                        5 ,  6 ,  7 에서 볼 수 있듯이 모든 문자가 일치합니                 0  1  ❷  3  4  5  6  7  8  9  10
                                                                    c  5   A  B  A  B  C  D  E  F  G  H  A
                        다. 검색 성공입니다.
                                                                              A  B  C 1번째 문자는 일치합니다.
                                                                               0   1  2

                                                                           0  1  2  ❸  4  5  6  7  8  9  10
                                                                       6   A  B  A  B  C  D  E  F  G  H  A
                                                                              A  B  C 2번째 문자도 일치합니다.
                                                                              0  ❶  2

                                                                           0  1  2  3  ❹  5  6  7  8  9  10
                                                                       7   A  B  A  B  C  D  E  F  G  H  A
                                                                              A  B  C 3번째 문자도 일치합니다.
                                                                              0  1  ❷
                                                                     [그림 8-11] 브루트-포스법으로 검색하는 과정




                                                                                      08•문자열 검색  321
   316   317   318   319   320   321   322   323   324   325   326