> 문자열
예시는 s= abab
1번째 생각)
s = s + s[0]
위 식은 위 예시에만 성공적
2번째 생각)
s=qwerty
s=s+s[len(s)-1::-1]
qwerty + trewq
= qwertytrewq
위 예시에서는 성립.
하지만
abab + aba
abababa
똑같이 역으로 해도 똑같은 값이 나오긴 하지만
가장 짧은 팰린드롬을 만드는 방법은 아니다.
3번째 생각)
s = abdfhdyrbdbsdfghjkllkjhgfds
위 예시에서 2번째 방법을 대입했더니
53이 나옴
나와야하는 답은 38...
그래서 다시 살펴봄
문자열 내 부분 문자열이 팰린드롬일 경우를 생각해줘야한다.
만약 팰린드롬이 문자열 끝부분에 위치해있다면?
2번째 방법을 사용하면
가장 짧은 팰린드롬을 구할 수 없게 된다.
s 문자열에는
sdfghjkllkjhgfds라는 팰린드롬이 포함되어 있다.
팰린드롬이 문자열 맨 끝부분에 존재하고 있으므로
팰린드롬 앞부분,
s[:11] 부분을
s 문자열의 맨 뒤에다가 뒤집어서 붙이면 끝!
s = abdfhdyrbdbsdfghjkllkjhgfdsbdrydhfdba
ns= abdfhdyrdbsdfghjkllkjhgfdsbdbrydhfdba
s = input()
if s == s[::-1]:
print(len(s))
else:
for i in range(len(s)):
if s[i:]==s[i:][::-1]:
print(len(s)+i)
break
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[15681] 트리와 쿼리 (0) | 2022.03.07 |
---|---|
[16948] 데스 나이트 In python (0) | 2022.03.06 |
[2792] 보석상자 in python (0) | 2022.03.06 |
[2805] 나무 자르기 in python (0) | 2022.03.06 |
[2108] 통계학 in python (2) | 2022.03.04 |