Algorithm/SW Expert Academy

[Python] 4864. 문자열비교

느낌표 공장장 2021. 9. 7. 23:58

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