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


문자열 문제

정답제출코드


#include <string>
#include <iostream>

using namespace std;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    string s, t;


    while (cin >> s >> t)
    {
        int idx = 0;
        bool flag = false;
        for (size_t i = 0; i < t.length(); ++i)
        {
            if (s[idx] == t[i])
            {
                idx++;
                if (idx == s.length())
                {
                    cout << "Yes\n";
                    flag = true;
                    break;
                }
            }
        }
        if (!flag)
            cout << "No\n";
    }

    

    return 0;
}

쉬어가는 느낌으로 풀어본 문자열 문제.

원리는 간단하다.

idx = 0부터 시작해서 부분문자열 한 글자 한 글자가 순서대로 모두 문자열 안에 있는지

살펴봐주면 된다. 이렇게 하면 시간복잡도도 O(N)이니까 괜찮을 것이라 생각한다.

모두 들어있다면 idx 값이 부분 문자열의 길이가 될 것이고 이때 Yes를 출력하면 된다.

idx값이 부분 문자열 길이보다 작은데 for문이 끝나면 No를 출력하고.


© 2022.07. by Wookey_Kim

Powered by Hydejack v7.5.2