Algorithm (PS)

[백준] 15927 파이썬 - 회문은 회문아니야!!

minjiwoo 2022. 11. 5. 15:39
728x90

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

 

15927번: 회문은 회문아니야!!

팰린드롬이란 앞으로 읽으나 뒤로 읽으나 같은 문자열을 말한다. 팰린드롬의 예시로 POP, ABBA 등이 있고, 팰린드롬이 아닌 것의 예시로 ABCA, PALINDROME 등이 있다. 같은 의미를 가지는 여러 단어들을

www.acmicpc.net

애드혹 유형이라고 한다 

1. ZZZ 같이 같은 문자로 연속되는 문자의 경우 어떻게 문자열을 슬라이싱하더라도 펠린드롬 문자열이므로, -1을 return 한다. 

1 의 경우에 해당되지 않는다면, 해당 문자열이 펠린드롬인지 아닌지를 판단해서 쉽게 답을 얻을 수 있다. 

2. 펠린드롬 문자열인 경우 : (전체 문자열 길이-1)를 return 한다. 
3. 펠린드롬 문자열이 아닌 경우 : 전체 문자열 길이 를 return 한다. 

word = input()

# 펠린드롬인지 체크
def check_palindrome(word):
    count = 0
    n = len(word)
    if n == 1:
        return -1
    # 전부 같은 문자열인지 확인하기
    if n == word.count(word[0]):
        return -1

    # 팰린드롬인제 확인하기
    left = 0
    right = n-1
    flag = True
    while left < right:
        if word[left] == word[right]:
            left += 1
            right -= 1
        else:
            flag = False
            break
    if flag:
        return n-1
    else:
        return n

print(check_palindrome(word))
728x90