728x90
반응형
https://www.acmicpc.net/problem/15927
문제
팰린드롬이란 앞으로 읽으나 뒤로 읽으나 같은 문자열을 말한다. 팰린드롬의 예시로 POP, ABBA 등이 있고, 팰린드롬이 아닌 것의 예시로 ABCA, PALINDROME 등이 있다.
같은 의미를 가지는 여러 단어들을 보자.
- 회문 (한국어)
- palindrome (영어, 프랑스어, 노르웨이어, 그리스어, 라틴어)
- 回文 (일본어, 중국어)
- palindrom (독일어, 덴마크어)
- palindromi (핀란드어)
- palíndromo (스페인어, 포르투갈어)
- palindromo (이탈리아어, 에스페란토어)
- палиндром (러시아어)
- قلب مستو (아랍어)
뭔가 이상한 점이 보이지 않는가? 그 어떤 언어에서도 팰린드롬을 뜻하는 단어는 팰린드롬이 아니다! 많은 사람들이 추구하는 “대칭의 아름다움”은 그저 허상에 불과하다.
알파벳 대문자로 이루어진 문자열이 주어졌을 때, 팰린드롬이 아닌 가장 긴 부분문자열의 길이를 구해 보자. 이때 부분문자열을 이루는 글자는 연속해야 한다. AB는 ABCD의 부분문자열이지만, AC는 아니다.
입력
길이가 1 이상 50만 이하인 문자열이 주어진다.
출력
팰린드롬이 아닌 가장 긴 부분문자열의 길이를 출력한다. 그런 부분문자열이 없으면 -1을 출력한다.
풀이
Code
import sys
input = sys.stdin.readline
string = input().rstrip()
l = len(string)
# 1. 문자열이 한 문자로만 구성되어 있는 경우
if len(set(string)) == 1 : print(-1)
# 2. 나머지 경우가 팰린드롬일 경우
elif string == string[::-1] : print(l - 1)
# 3. 원래 문자열이 팰린드롬이 아닐 경우
else : print(l)
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[Python/BOJ] 13565. 침투 (1) | 2023.09.18 |
---|---|
[Python/BOJ] 3190. 뱀 (0) | 2023.09.11 |
[Python/BOJ] 2565. 전깃줄 (0) | 2023.09.08 |
[Python/BOJ] 15922. 아우으 우아으이야!! (0) | 2023.09.08 |
[Python/BOJ] 11497. 통나무 건너뛰기 (0) | 2023.09.05 |