문제
알고리즘
- 문자열 길이가 n일 때와 n-1일 때 회문이 되는지 확인한다.
- 문자열의 길이가 n일 때 회문이면서, n-1일 때도 회문이라면 그 문자열은 하나의 문자로 연속되어 있는 문자열인 회문이다.
- 문자열이 짝수인지 홀수인지, 길이가 n일 때인지 n-1일 때인지에 따라서 왼쪽 문자열과 오른쪽 문자열을 나눈다.
- 나눈 문자열이 회문인지 판단하여 문제를 수행한다.
코드
import sys
# 회문인지 판단
def solution(n):
# 문자열이 짝수인지 홀수인지에 따라서 왼쪽 문자열과 오른쪽 문자열을 나눔.
if len(word) % 2 == 0:
left = word[0: len(word)//2 - n]
else:
left = word[0: len(word)//2 + 1 - n]
right = word[len(word)//2:len(word) - n]
# 왼쪽 문자열과 오른쪽 문자열이 똑같지 않으면 회문이 아님
if left != right[::-1]:
return True
return False
word = list(map(str, sys.stdin.readline().strip()))
# 길이 n이 회문인지 확인
if solution(0):
print(len(word))
# 길이 n-1이 회문인지 확인
elif solution(1):
print(len(word) - 1)
# 회문!!!
else:
print(-1)
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 3107번(파이썬): IPv6 (0) | 2022.05.18 |
---|---|
[baekjoon] 백준 2257번(파이썬): 화학식량 (0) | 2022.05.17 |
[baekjoon] 백준 12919번(파이썬): A와 B 2 (0) | 2022.05.15 |
[baekjoon] 백준 2800번(파이썬): 괄호 제거 (0) | 2022.05.14 |
[baekjoon] 백준 6443번(파이썬): 애너그램 (0) | 2022.05.13 |