https://www.acmicpc.net/problem/6550

 

6550번: 부분 문자열

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

www.acmicpc.net

 

풀이 과정


  1. s의 문자들로 구성된 큐를 생성한다.
  2. t의 문자들을 왼쪽에서 오른쪽으로 순서대로 비교
    1. 큐의 맨 앞 요소가 t의 문자와 같다면 제거 후 다음 문자 진행
    2. 큐의 맨 앞 요소가 t의 문자와 같지 않다면 그냥 다음 문자 진행
  3. 큐가 비어있다면 부분 문자열이고, 큐가 비어있지 않다면 부분 문자열이 아닌 것으로 볼 수 있다. 

소스 코드


import sys
from collections import deque

while True:
    try:
        s, t = input().split()
        queue = deque(list(s))

        for c in t:
            if queue and c == queue[0]:
                queue.popleft()

        if queue:
            print('No')
        else:
            print('Yes')
    except:
        break

+ Recent posts