728x90
https://www.acmicpc.net/problem/15927
애드혹 유형이라고 한다
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
'Algorithm (PS)' 카테고리의 다른 글
[백준] 21278번 호석이 두 마리 치킨 Python (BFS풀이, 플로이드워셜) (0) | 2022.11.09 |
---|---|
[프로그래머스] 여행경로 Python (파이썬) (0) | 2022.11.09 |
[백준] 13022 : 늑대와 올바른 단어 Python/파이썬 풀이 (0) | 2022.11.04 |
[백준] 2470 두 용액 파이썬 (0) | 2022.10.30 |
[백준] 2615 오목 Python (0) | 2022.10.27 |