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

JinUk Lee·2023년 2월 2일
0

백준 알고리즘

목록 보기
34/78

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

import sys

T = int(input())


def per(S,left,right):

    while left<right:
        if S[left]==S[right]:
            left+=1
            right+=-1
        else:
            return False

    return True

def secper(S,left,right):

    if per(S,left,right):
        return 0

    while left<right:
        if S[left]==S[right]:
            left+=1
            right+=-1
        elif S[left]!=S[right]:
            start_left = per(S,left+1,right)
            start_right = per(S,left,right-1)

            if start_right or start_left:
                return 1
            else:
                return 2


for t in range(T):
    S = sys.stdin.readline().rstrip()

    left = 0
    right = len(S)-1

    print(secper(S,left,right))

회문의 특성상 양끝에서 똑같은 갯수의 문자를 지워도 회문이다.

하나씩 비교하다가 양쪽이 서로 문자가 다를때 한쪽씩 지워가면서 회문 체크를 해준다.

profile
개발자 지망생

0개의 댓글