👉 문제 링크
👉 시행착오
1) 패턴이 항상 x*x 형태로 오는 줄 생각했다.
꼭 하나의 문자만 패턴인 것이 아니라 ab*cd 처럼 여러 개가 될 수 있다.
❌ 바꾼 코드
for i in range(len(pattern[0])):
start += s[i]
for i in range(len(pattern[1])):
end += s[len(s)-(i+1)]
2) 패턴의 길이가 파일 이름보다 긴 경우를 고려하지 못했다.
위 코드로는 abc*def a 가 주어졌을 때 인덱스 에러가 발생한다.
❌ 바꾼 코드
if len(pattern[0]) <= len(s):
for i in range(len(pattern[0])):
start += s[i]
if len(pattern[1]) <= len(s):
for i in range(len(pattern[1])):
end += s[len(s)-(i+1)]
3) ab*bd abd 의 경우를 생각하지 않았다.
위 코드로는 start에 'ab', end에 'bd'가 들어가게 되어 'b'가 중복이지만 이를 찾지 못한다.
❗️ 바꾼 코드
if len(pattern[0]) < len(s):
for i in range(len(pattern[0])):
start += s[i]
if len(pattern[1]) <= len(s) - len(start):
for i in range(len(pattern[1])):
end += s[len(s)-(i+1)]
👉 전체 코드
n = int(input())
pattern = input().split('*')
for _ in range(n):
s = input()
start = ''
end = ''
if len(pattern[0]) < len(s):
for i in range(len(pattern[0])):
start += s[i]
if len(pattern[1]) <= len(s) - len(start):
for i in range(len(pattern[1])):
end += s[len(s)-(i+1)]
end = list(end)
end.reverse()
end = ''.join(end)
if pattern[0] == start and pattern[1] == end:
print("DA")
else:
print("NE")