알고리즘/백준

[백준/c++] 6550번: 부분 문자열

녕이 2022. 7. 12. 12:34
728x90

 

https://www.acmicpc.net/problem/6550

 

6550번: 부분 문자열

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다.

www.acmicpc.net

 

s의 문자들이 t에 있는지 확인하는 것이므로 for문을 사용하면 되는데, 이때 t에 있는지만 확인하는 게 아니라 s 문자열 순서 그대로 있어야 한다. 처음엔 이중 for문을 사용하려고 했는데, 그냥 index 변수로 s 문자열의 문자를 하나씩 확인해도 된다. t의 문자와 동일하면 index 값만 증가시켜주고, 만약 t 문자를 모두 확인하기 전에 s를 모두 확인했으면 YES, t 문자를 모두 확인했는데 s를 모두 확인하지 못했다면 NO를 출력하면 된다.

 

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    string s, t;
    
    while(cin >> s >> t){
        int lens = s.size();
        int lent = t.size();
        bool flag = false;
        int index = 0;
        
        for(int i=0; i<lent; i++){
            if(s[index] == t[i]) index++;
            if(index == lens){
                flag = true;
                break;
            }
        }
        if(flag) cout << "Yes\n";
        else     cout << "No\n";
    }
    
    return 0;
}

 

 

 

 

728x90