본문 바로가기
백준알고리즘/문자열

(Python/🥈5)백준알고리즘6550번: 부분 문자열

by windy7271 2023. 8. 3.
728x90
반응형

 

문제 바로가기 

https://www.acmicpc.net/problem/6550
부분 문자열

문제:

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

입력:

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

 

출력:

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

 

풀이:

 

import sys
sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')

while True:
    try:
        A, B = sys.stdin.readline().rstrip().split()

        count = 0
        for i in B:
            if count < len(A) and A[count] == i:
                count += 1

        if count == len(A):
            print("Yes")
        else:
            print("No")
    except:
        break

 

 

count 는 왼쪽 문자열과 오른쪽 문자열을 매치했을때 맞는것을 센다.

 

오른쪽문자열은 처음부터 순서대로 포문을 돌리고 왼쪽문자열 앞에서부터(count= 0) 비교해간다. 맞으면 count += 1 을해준다.

이미 다 맞아버려서 count가 len(A) 초과 될 수도 있다. 그래서 조건을 count < len(A) 를 넣어준다.

 

마지막에 다 맞으면 count == len(A) yes출력

반응형

댓글