728x90
반응형
문제 바로가기
문제:
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출력
반응형
댓글