부분 문자열(백준 6550번)
💡 **Check Point !
( 해당사항 ✓체크 )
막힘 없이 수월하게 풀린 문제인가? ✓
1시간이내로 풀렸던 문제인가?
1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
시간을 써도 도무지 풀 수 없는 문제인가?
솔루션을 찾아봤는가?
난이도 체감
최상
상
중
하✓
이해도
완벽히 이해✓
다소 헷갈리는 부분들이 있음
이해 못함
문제
2개의 문자열 s와 t가 주어졌을 때 s가 t의 부분 문자열인지 판단하는 프로그램을 작성하라. 부분 문자열을 가지고 있는지 판단하는 방법은 t에서 몇 개의 문자를 제거하고 이를 순서를 바꾸지 않고 합쳤을 경우 s가 되는 경우를 이야기 한다.
나의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys
while True:
I=sys.stdin.readline().strip()
if I=='':
break
S,T=I.split()
start=T.find(S[0])
if start==-1:
print('No')
continue
count=1
for s in S[1:]:
for i in range(start+1,len(T)):
if T[i]==s:
start=i
count+=1
break
if count==len(S):
print('Yes')
else:
print('No')
- 입력
S
의 첫글자가 존재하는T
의 index를 먼저 찾고,start
로 지정한다. S[1:]
에 해당하는 모든 문자에 대해,start
지점 이후 같은 글자가 순서대로 존재하는지 찾는다.- 이때
start
값은 각 문자의 index값으로 치환되고,count
값이len(S)
와 같지 않으면 다 찾지 못한 것으로 간주한다.
This post is licensed under CC BY 4.0 by the author.