본문 바로가기

코딩테스트/SWEA

[Python, 파이썬] SWEA 4522. 세상의 모든 팰린드롬

?라는 와일드카드가 있는 특정한 패턴이 주어질 때, 이에 매치되는 팰린드롬을 찾는 문제.

 

 

T = int(input()) # 테스트 케이스의 수 T

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

    word = list(input()) # 패턴 입력받기

    N= len(word) # 패턴 길이 구하기
    result = "Not exist"
    
    for i in range(N):

        if(word[i]=="?"): # 와일드 카드이면
            word[i] = word[N-(i+1)] # 같은 위치의 문자로 대체

    if(word==word[::-1]): # 대칭되면
        result = "Exist" # 팰린드롬 존재!

    print("#%d %s" %(test_case, result))
 

 

[문제풀이]


 

?는 임의의 문자로 대체될 수 있는 와일드 카드다.

if(word[i]=="?"): # 와일드 카드이면
     word[i] = word[N-(i+1)] # 같은 위치의 문자로 대체
 

그래서 for문을 돌려서 ? 발견 시 대칭되는 위치의 문자로 대체 해준다.

그리고 이를 역순으로 읽은 값과 원 문자열이 같으면 펠린드롬이 존재한다!