부르트 포스(Brute-Force)란?
부르트 포스란 일차원적으로 앞에서부터 끝까지 차근차근 탐색하는 알고리즘입니다. 즉 모든 경우의 수를 모두 따지는 것입니다.
이 알고리즘은 마치 요령 부리지 않고 우직하게 일하는 일꾼처럼 동작합니다. 따라서 고지식한 탐색이라고도 합니다.
이를 문자열 탐색에 사용한다면, 본문의 길이를 M, 패턴 길이를 N이라고 했을 때 본문 속에 있는 패턴을 찾기 위해 최악의 경우 N*M번의 비교를 수행합니다.
구현
int BruteForce(char* Text, int TextSize, int Start, char* Pattern, int PatternSize){
for(int i=Start; i<=TextSize-PatternSize; i++){ //본문의 한글자씩 비교해가며 패턴 찾기
for(int j=0; j<PatternSize; j++){
if(Text[i+j] != Pattern[j]) break;
}
if(j >= PatternSize) return i;
}
return -1;
}
'알고리즘 > 문자열 탐색(StringSearch)' 카테고리의 다른 글
[알고리즘] 보이어-무어(Boyer-Moore) 알고리즘 - 코딩밥상 (0) | 2023.01.27 |
---|---|
[알고리즘] KMP(Knuth-Morris-Pratt) 알고리즘 - 코딩밥상 (1) | 2023.01.26 |
[알고리즘] 카프-라빈(Karp-Rabin) 알고리즘 - 코딩밥상 (0) | 2023.01.26 |