[패턴매칭][Python]보이어 무어 알고리즘


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 보이어 무어 알고리즘
for t in range(int(input())):
    pattern = input()
    text = input()
    pivot = len(pattern)-1
    skip_array = list(pattern)
    skip_array.reverse()
    result = 0
    while result != 1 and pivot < len(text):
        if pattern[len(pattern)-1] != text[pivot]:
            if text[pivot] in skip_array:
                nums = skip_array.index(text[pivot])
                pivot += nums
            else:
                pivot += len(pattern)
        else:
            for i, j in zip(range(pivot, pivot-len(pattern), -1), skip_array):
                if text[i] == j:
                    result = 1
                else:
                    result = 0
                    pivot = i
                    break
    print("#{} {}".format(t+1, result))
참고문제: SW Expert Academy 4864번 문제

댓글

이 블로그의 인기 게시물

[python]섬의 둘레구하기

백트래킹으로 부분집합구하기(Get Powerset usiing Backtracking)

[Python]DFS를 이용한 부분집합 구현