https://www.acmicpc.net/problem/1254
백준 1254 '팰린드롬 만들기' 문제입니다.
저의 아이디어를 설명하겠습니다.
일단 input을 test라고 하면 test + test[::-1][1:]을 만듭니다.
예를 들어서 input을 abacaba라고 하면 일단 abacaba'bacaba'를 만듭니다.
그리고 문자를 ''안에 있는 문자를 하나씩 지워가면서 체크해줍니다.
위에 예로 진행하면
abacaba'bacaba'
abacaba'acaba'
abacaba'caba'
abacaba'aba'
abacaba'ba'
abacaba'a'
abacaba
작은 따옴표는 구분하기 쉽게 하기 위해서 붙였습니다.
import sys
input = sys.stdin.readline
def palindrome(word, left, right):
while left < right:
if word[left] == word[right]:
left += 1
right -= 1
else:
return False
return True
test = input().strip()
for i in range(1, len(test)+1):
sample = test + test[::-1][i:]
check = palindrome(sample, 0, len(sample)-1)
if check is True:
answer = len(sample)
print(answer)
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 16120번 : PPAP (0) | 2022.06.30 |
---|---|
파이썬) 백준 알고리즘 | 2670번 : 연속부분최대곱 (0) | 2022.06.28 |
파이썬) 백준 알고리즘 | 1769번 : 3의 배수 (0) | 2022.04.04 |
파이썬) 백준 알고리즘 | 17298번 : 오큰수 (0) | 2022.04.03 |
파이썬) 백준 알고리즘 | 1655번 : 가운데를 말해요 (0) | 2022.03.29 |
댓글