본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 17609번 회문

by 현장 2022. 5. 13.

-Code

for _ in range(int(input())):
    s = input()
    start, end = 0, len(s) - 1
    if s == s[::-1]:
        print(0)
    else:
        while start < end:
            if s[start] == s[end]:
                start += 1
                end -= 1
            else:
                if s[start:end] == s[start:end][::-1] or s[start + 1:end + 1] == s[start + 1:end + 1][::-1]:
                    cnt = 1
                    break
                else:
                    cnt = 2
                    break
        print(cnt)

처음에는 2보다 더 큰 수가 있을 줄 알고 짜다가 코드가 이상해져서 틀리고 다시 보나 3가지 경우수 밖이 없었습니다. 투 포인터로 사용을 하다가 투 포인터로만 풀라지 않아서 찾아보니 슬라이딩 윈도를 사용하여 범위 맞추는 데 좀 걸렸지만 해결은 했습니다.