[백준] 6550 : 부분 문자열 - Python

Chooooo·2023년 2월 20일
0

알고리즘/백준

목록 보기
78/182
post-thumbnail

부분 문자열

2개의 문자열 s와 t가 주어졌을 때 s가 t의 부분 문자열인지 판단하는 프로그램을 작성하라. 부분 문자열을 가지고 있는지 판단하는 방법은 t에서 몇 개의 문자를 제거하고 이를 순서를 바꾸지 않고 합쳤을 경우 s가 되는 경우를 이야기 한다.

입력

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

출력

입력된 s와 t의 순서대로 s가 t의 부분 문자열인 경우 Yes라 출력하고 아닐 경우 No라고 출력한다.

import sys
sys.stdin = open("input.text", "rt")
from collections import deque

#s가 t의 부분문자열인지 판단
while True:
    try:
        s,t = input().split()
        flag = 0
        idx = 0
        for i in range(len(t)):
            if t[i] == s[idx]:
                idx += 1
                if idx == len(s): #모든 문자 발견
                    flag = 1
                    break
        if flag == 1:
            print("Yes")
        else:
            print("No")
    except:
        break

⚽ 코멘트

해당 문제는 제대로 생각했어야 했다. 한쪽의 인덱스를 고정시켜서 다른 쪽과 같은 것이 있으면 idx를 증가시키는 이 과정을 이해했어야 했는데, 이걸 몰라서 풀지 못했었다..
s가 t에 포함되는지를 확인하는 것이기 때문에 s의 인덱싱을 고정시키고 t의 인덱스를 움직이면서 존재하면 idx를 증가시키면서 최종 idx가 s의 문자열 길이만큼 갔다면 그건 s의 모든 문자를 t가 가지고 있다는 것이기에 해결!

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글