여니의 취준 준비/코딩테스트 (Python)

[1254] 팰린드롬 만들기 in python

여니's 2022. 3. 6. 18:53

 

> 문자열

 

 

예시는 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