in 을 이용한 간단한 풀이 코드
tc = int(input())
for idx in range(1, tc+1):
str1 = input()
str2 = input()
str1_l = len(str1)
answer = 0
if str1 in str2:
answer = 1
print('#{} {}'.format(idx, answer))
보이어무어 알고리즘을 이용하여 푼 코드
tc = int(input())
for idx in range(1, tc+1):
str1 = input()
str2 = input()
str1_l = len(str1)
answer = 0
# 건너뛸 리스트 만들기
str_skip = {str1[i]:str1_l - i -1 for i in range(str1_l)}
print(str_skip)
# 검색
i = str1_l -1
while i < len(str2):
j = str1_l - 1
while str2[i] == str1[j]:
if not j:
answer = 1
break
i -= 1
j -= 1
if str_skip[str1[j]] > str1_l - j:
i += str_skip[str1[j]]
else:
i += str1_l-j
print('#{} {}'.format(idx, answer))
'Algorithm > SW Expert Academy' 카테고리의 다른 글
[Python] 2005. 파스칼의 삼각형 (0) | 2021.09.14 |
---|---|
[Python] 4865. 글자수 (0) | 2021.09.07 |
[Python] 1216. 회문2 (0) | 2021.09.07 |
[Python] 4861. 회문 (0) | 2021.09.07 |
[Python] 1221. GNS (0) | 2021.09.07 |