1seul357
[BOJ] 회문은 회문아니야!! 본문
회문은 회문아니야!!
문제
팰린드롬이란 앞으로 읽으나 뒤로 읽으나 같은 문자열을 말한다. 팰린드롬의 예시로 POP, ABBA 등이 있고, 팰린드롬이 아닌 것의 예시로 ABCA, PALINDROME 등이 있다. 같은 의미를 가지는 여러 단어들을 보자.
회문 (한국어)
palindrome (영어, 프랑스어, 노르웨이어, 그리스어, 라틴어)
palíndromo (스페인어, 포르투갈어)
palindromo (이탈리아어, 에스페란토어)
알파벳 대문자로 이루어진 문자열이 주어졌을 때, 팰린드롬이 아닌 가장 긴 부분문자열의 길이를 구해 보자.
이때 부분문자열을 이루는 글자는 연속해야 한다. AB는 ABCD의 부분문자열이지만, AC는 아니다.
해결방법
- 테스트 케이스가 힌트이다.
- ABCBA 처럼 팰린드롬인 경우 : 전체 문자열 길이에서 -1 한 값이 팰린드롬이 아닌 가장 긴 문자열이 된다.
- PALINDROME 처럼 팰린드롬이 아닌 경우 : 전체 문자열 길이가 팰린드롬이 아닌 가장 긴 문자열이다.
- ZZZ 처럼 하나의 문자로 되어 있는 경우 : -1 출력
- 이중 for문 통해 회문이 아닌 가장 긴 문자열을 카운팅하는 경우 시간초과가 발생한다.
소스코드
arr = input()
if arr[:] == arr[::-1] and len(set(arr)) != 1: // ABCBA와 같은 팰린드롬인 경우
print(len(arr)-1)
elif len(set(arr)) == 1: // ZZZ처럼 하나의 문자로 되어 있는 경우
print(-1)
else: // PALINDROME처럼 팰린드롬 아닌 경우
print(len(arr))
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] 서로 다른 부분 문자열의 개수 (0) | 2022.07.30 |
---|---|
[BOJ] IPv6 (0) | 2022.07.29 |
[BOJ] 단어 뒤집기2 (0) | 2022.07.27 |
[BOJ] 비밀번호 발음하기 (0) | 2022.07.25 |
[BOJ] 듣보잡 (0) | 2022.07.24 |