알고리즘/백준
[백준/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