※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 6550번 문제인 부분 문자열이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/6550
6550번: 부분 문자열
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다.
www.acmicpc.net
각 테스트케이스에 대해서, 문자열 T의 각 문자를 처음서부터 살펴보며 아직 S와 차례대로 매칭되지 않은 다음 문자를 매칭해나가는 방식으로 문제를 해결할 수 있다.
T의 모든 문자를 다 보고도 매칭을 해내지 못했다면 No를, 매칭을 해냈다면 Yes를 출력해 문제를 해결하자. 글쓴이는 NO와 YES를 출력했다가 한번 틀렸다...
S 또는 T의 모든 문자를 다 살펴본 뒤에도 계속해서 해당 문자열의 문자를 보려고 시도하지 않게끔 구현 시 유의하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
string S, T;
int slen, tlen;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
while (cin >> S >> T) {
slen = S.length(), tlen = T.length();
int sidx = 0, tidx = 0;
while (sidx < slen && tidx < tlen) {
if (S[sidx] == T[tidx]) sidx++, tidx++;
else tidx++;
}
if (sidx == slen) cout << "Yes\n";
else cout << "No\n";
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 9693 // C++] 시파르 (0) | 2023.02.21 |
---|---|
[BOJ 5698 // C++] Tautogram (0) | 2023.02.21 |
[BOJ 12518 // C++] Centauri Prime (Small2) (0) | 2023.02.21 |
[BOJ 24039 // C++] 2021은 무엇이 특별할까? (0) | 2023.02.21 |
[BOJ 12871 // C++] 무한 문자열 (0) | 2023.02.21 |