T = int(input())

for tc in range(1,1+T):

    # 단어
    word = list(str(input()))

    # 단어 길이
    n = len(word)

    # 카운트
    cnt = 0

    # 단어의 시작점, 끝점에 *이 있으면 무조건 팰린드롬임
    if word[0] == '*' or word[-1] == '*':
        print('#{} {}'.format(tc,'Exist'))

    else:
        for q in range(n//2):
            
            # 단어의 시작점의 값 == 끝점의 값
            # 더 반복할 필요 없음
            if word[q] == '*' or word[-1-q] == '*':
                cnt = n//2
                break

            # 해당 위치의 값과 반대편의 위치의 값이 같으면 
            elif word[q] == word[-1-q]:
                cnt += 1

            # 하나라도 조건에 불일치한 경우 끝
            else:
                break

        if cnt == n//2:
            print('#{} {}'.format(tc, 'Exist'))
        else:
            print('#{} {}'.format(tc, 'Not exist'))

그 외

문제 풀이를 위한 아이디어

 

1. 한 번이라도 팰린드롬의 조건에서 벗어나면 해당 글자는 더 이상 팰린드롬이 될 수 없다

ex) a ** c 이런 경우는 팰린드롬 X

 

2. [0]과 [-1] 위치 중 한 곳의 값이 *인 경우, 무조건 팰린드롬의 조건에 충족함

ex) q w e a s d *인 경우, * = d s a e w q 이런식으로 조건 충족 가능

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다