[C++][백준 6550] 부분 문자열

PublicMinsu·2024년 3월 13일

문제

접근 방법

2개의 포인터를 사용하여 2개의 문자열을 비교해 주면 된다.
동일한 경우에만 s와 t의 포인터를 옮기고 아니면 t만 옮기는 형식으로 해결한다.

코드

#include <iostream>
using namespace std;
string s, t;
bool isSubstring()
{
    int i = 0, j = 0;
    while (true)
    {
        if (s[i] == t[j]) // 동일한가?
        {
            ++i, ++j;
        }
        else
        {
            ++j;
        }

        if (s.size() == i || t.size() == j) // 만약 i 또는 j 끝까지 갔다면
        {
            break;
        }
    }
    return s.size() == i; // 끝까지 확인했는가?
}
int main()
{
    ios::sync_with_stdio(0), cin.tie(0);
    while (cin >> s >> t)
    {
        cout << (isSubstring() ? "Yes" : "No") << "\n";
    }
    return 0;
}

풀이

만약 s의 포인터가 끝까지 도착했다면 t안에는 s의 내용이 있다는 뜻이다. 더 확인해 볼 필요가 없다는 뜻이다.

profile
연락 : publicminsu@naver.com

0개의 댓글