1254 - python

문제

내풀이

s = input()
mid = len(s)//2
f,r = mid, mid+1

if len(s) == 1:
    print(1)
elif len(s) == 2:
    print(3)
else:
    while(True):
        if f == 0 and r == len(s)-1 and s[f] == s[r]:
            print(len(s))
            break
        if s[f] == s[r]:
            f -= 1
            r += 1
        else:
            if mid-f == r-mid:
                mid += 1
                f = mid
                r = mid + 1
            elif mid-f <= r-mid:
                f -= 1
            else:
                r += 1
        
        if r == len(s):
            if mid == len(s) - 1:
                s += s[mid-1]
            else:
                s += s[f]
        

front 와 mid로 하나씩 비교해가면서 풀려고 했지만, 점점 더러워지면서 테케는 맞는데 통과를 못했다.

다른 사람 풀이

s=input()

for i in range(len(s)):
    print(s[i:][::-1])
    print()
    if s[i:]==s[i:][::-1]:
        print(len(s)+i)
        break

문자열 뒤집기 [::-1] 을 사용

지렷다

i번째부터 끝까지랑 이걸 뒤집은게 같으면 그앞에거만큼 뒤집어서 넣어주면 된다.

좋은 웹페이지 즐겨찾기