Baekjoon 17609.py [회문]

hohooodo·2021년 7월 12일
0

Problem Solving

목록 보기
24/32
post-thumbnail

문제가 궁금하다면?

내 풀이

import sys
input = sys.stdin.readline


def isPalin(word):
    mid = len(word)//2
    result = 0
    for i in range(mid):
        if not word[i] == word[-(i+1)]:
            if isLeftPseudoPalin(i, mid, word) or isRightPseudoPalin(i, mid, word):
                return 1
            else:
                return 2
    return 0


def isRightPseudoPalin(i, mid, word):
    for j in range(i, mid):
        if not word[j] == word[-(j+2)]:
            return False
    return True


def isLeftPseudoPalin(i, mid, word):
    for j in range(i, mid):
        if not word[j+1] == word[-(j+1)]:
            return False
    return True


for _ in range(int(input())):
    v = input().rstrip()
    print(isPalin(v))

풀이 복기

회문인지 아닌지 검사하는 로직은 바로 생각났다 하지만, 유사회문을 검사하는 방법은 1시간동안 생각나지않아 타 풀이 찾아봄. 회문 확인하는 방법은 for문을 통해i-i-1가 같은지 확인하는 방법을 사용함.

유사회문을 확인하는 방법은 i와 -i-1의 값이 다를때 i+1, -i-1을 확인(왼쪽 인덱스 1증가) 또는 i, -i-2를 확인(오른쪽 인덱스 1감소)해서 둘중에 하나라도 맞는경우에 유사회문임을 확인할수있다.

profile
글을 잘쓰는 개발자가 되고싶습니다

0개의 댓글