※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts