[C++][백준 11008] 복붙의 달인

PublicMinsu·2024년 3월 12일

문제

접근 방법

문자열에서 붙여 넣기 할 수 있는 값을 만나면 그 값만큼 뛰어넘어 주면 된다. 만약 못 만나면 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와 동일한지 확인해 주면 된다.

profile
연락 : publicminsu@naver.com

0개의 댓글