*라는 와일드카드가 있는 특정한 패턴이 주어질 때, 이에 매치되는 팰린드롬을 찾는 문제.
T = int(input()) # 테스트 케이스의 수 T
for test_case in range(1, T+1):
word = list(input()) # 패턴 입력받기
N= len(word) # 패턴의 길이
result = "Exist"
i = 0
while(word[i] != '*' and word[N-(i+1)] != '*' and i < N-1): # * 와일드 카드 나오기 전까지 반복
if(word[i] != word[N-(i+1)]): # 펠린드롬이 아닐 시
result = "Not exist"
i +=1
print("#%d %s" %(test_case, result))
[문제풀이]
SWEA 4522 문제의 확장판으로, *를 사용한 패턴과 매치되는 단어가 있는지 구하는 문제.
*는 길이가 0 이상인 임의의 알파벳들로 대체될 수 있는 와일드 카드다.
?는 대칭되는 문자로 대치해서 펠린드롬인지 확인하면 됬지만, *는 0개 이상의 알파벳으로 대치된다.
absdfs*a
그래서 이런 문자라도 *가 알아서 대치해주기 때문에 펠린드롬이 된다.

그래서 * 나오기 전까지 일치하면 펠린드롬!
while문을 돌려서 체크하면 된다.
'코딩테스트 > SWEA' 카테고리의 다른 글
| [Python, 파이썬] SWEA 14555. 공과 잡초 (1) | 2024.11.11 |
|---|---|
| [Python, 파이썬] SWEA 22574. 높은 곳으로 (1) | 2024.11.11 |
| [Python, 파이썬] SWEA 4522. 세상의 모든 팰린드롬 (0) | 2024.11.11 |
| [Python, 파이썬] SWEA 5356. 의석이의 세로로 말해요 (0) | 2024.11.11 |
| [Python, 파이썬] SWEA 1961. 숫자 배열 회전 (0) | 2024.11.11 |