
문자열에서 붙여 넣기 할 수 있는 값을 만나면 그 값만큼 뛰어넘어 주면 된다. 만약 못 만나면 1칸씩 옮기면 된다. 각각의 동작을 1초로 생각하고 문제를 풀면 된다.
#include <iostream>
using namespace std;
int T, answer;
string s, p;
bool isFind(int idx)
{
for (int j = 0; j < p.size(); ++j)
{
if (s[idx + j] != p[j])
{
return false;
}
}
return true;
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
cin >> T;
while (T--)
{
answer = 0;
cin >> s >> p;
for (int i = 0; i < s.size();)
{
++answer;
if (isFind(i))
{
i += p.size();
}
else
{
++i;
}
}
cout << answer << "\n";
}
return 0;
}
T가 25 s가 10,000 p가 100이다.
25000000인데 시간제한이 2초이기에 여유롭다고 할 수 있다.
문자열을 돌며 p와 동일한지 확인해 주면 된다.