문제
2개의 문자열 s와 t가 주어졌을 때 s가 t의 부분 문자열인지 판단하는 프로그램을 작성하라. 부분 문자열을 가지고 있는지 판단하는 방법은 t에서 몇 개의 문자를 제거하고 이를 순서를 바꾸지 않고 합쳤을 경우 s가 되는 경우를 이야기 한다.
예시 입력
sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia
caseDoesMatter CaseDoesMatter
예시 출력
Yes
No
Yes
No
아이디어
주어진 전체 입력에서 검색어의 문자열 순서대로 검색이 된다면 Yes 아니면 No
알고리즘
검색할 문자의 문자 순서대로 전체 문자열에서 매칭이 되는대로 idx를 1씩올린다. 모든 검색이 끝난후 idx의 수가 검색할 문자열 전체 길이만큼 조회가 된다면 성공이다.
소스코드
#include <bits/stdc++.h>
using namespace std;
string total;
string findstr;
int main() {
int index = 0;
while (cin >> findstr >> total) {
index = 0;
for (int i = 0; i < total.length(); i++) {
if (findstr[index] == total[i]) {//순서 문자열 발견!
index += 1;
}
}
if (index == findstr.length()) {
printf("Yes\n");
}
else {
printf("No\n");
}
}
}
알아 가야할것
- 전체 개수가 표시되지 않은 입력값에 대한 처리 방밥
'알고리즘, 코테 준비' 카테고리의 다른 글
백준10815 - 숫자카드 (0) | 2022.11.07 |
---|---|
백준 20291번 - 파일정리 (0) | 2022.11.06 |
백준 1260번 - DFS와 BFS (0) | 2022.11.06 |
백준 1717번 - 집합의 표현 (0) | 2022.11.06 |
백준17413 - 단어 뒤집기 2 (0) | 2022.11.06 |