문제풀이/기타

[파이썬] [문자열] 백준 17609 회문

승무_ 2023. 1. 7. 10:14

문제

https://www.acmicpc.net/problem/17609

 

17609번: 회문

각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다.

www.acmicpc.net

코드

t = int(input())


def cal(st):
    left = 0
    right = len(st) - 1

    while left < right:
        if st[left] == st[right]:
            left += 1
            right -= 1
        else:
            # 오른쪽 잘못 된 경우
            temp = st[:right] + st[right + 1:]
            if temp[:] == temp[::-1]:
                return 1
            # 왼쪽 잘못 된 경우
            temp = st[:left] + st[left + 1:]
            if temp[:] == temp[::-1]:
                return 1
            return 2
    return 0


for _ in range(t):
    print(cal(input()))

생각 정리

투포인터를 이용하여 문제를 해결하였다.