본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 5534번 간판

by 현장 2022. 5. 14.

-Code

def sol(s, target):
    l = len(old_name)
    for start in range(l):
        if s[start] == target[0]:
            for end in range(start, l):
                if s[end] == target[-1]:
                    gap = (end - start) // (len(target) - 1)
                    i = 0
                    while i < len(target):
                        if s[start + i * gap] == target[i]:
                            i += 1
                        elif s[start + i * gap] != target[i]:
                            break
                    else:
                        return 1
    return 0


n = int(input())
name = input()
result = 0
for _ in range(n):
    old_name = input()
    result += sol(old_name, name)
print(result)

코딩을 하다가 맨 처음에 등장하는 해당 단어만 검사하는 식으로 밖이 짜지지 않아서 몇 시간 고민해도 해결이 되지 않아서 해결 원리를 찾아봤습니다. 찾아보고 짜 봤지만 자잘한 부분에서 또 틀려서 더 오래 걸린 문제였습니다. 많이 아쉬운 문제였습니다.