빙수달 게임 개발 노트

[알고리즘] 브루트-포스(Brute Force) 본문

Programming/알고리즘

[알고리즘] 브루트-포스(Brute Force)

빙수달 2025. 1. 8. 23:36
#include <iostream>

using namespace std;

int BruteForce(const string &txt, const string &pat)
{
	std::size_t pt = 0;
	std::size_t pp = 0;

	while (pt < txt.size() && pp < pat.size())
	{
		if (txt[pt] == pat[pp])		// 텍스트와 패턴이 일치한다면
		{
			pt++;
			pp++;
		}
		else		 // 텍스트와 패턴이 일치하지 않는다면, 텍스트의 검색 시작부분 조정
		{
			pt = pt - pp + 1;
			pp = 0;
		}
	}
	if (pp == pat.size())
	{
		return pt - pp;
	}
	else
	{
		return -1;
	}
}

int main(void)
{
	string txt;
	string pat;
	cout << "브루탈 포스\n";
	cout << "텍스트 : ";
	cin >> txt;
	cout << "패턴 : ";
	cin >> pat;
	int idx = BruteForce(txt, pat);
	if (idx == -1)
	{
		"텍스트 내에 패턴이 없습니다";
	}
	else
	{
		cout << idx + 1 << "번 째에 패턴이 있습니다.";
	}
	return 0;
}