본문 바로가기
알고리즘

가장 긴 펠린드롬 (구현 , 최적화(?))

by dharana7723 2021. 7. 7.

단순한 문제이지만 구현후 성능 문제가 있을 것이라 예상했고 dp등을 생각해보았지만 딱히 떠오지않아서

다른 사람들의 풀이를 참고했습니다.

 

구현 내용은 같으나 가장 긴 것부터 파악하도록 구현하면 2번도 통과가 가능합니다.

여기서 깨달은 것은 저도 가장 긴것부터 하면 된다는 것은 알았지만, 그러한 태도가 습관화되어있지는 않는 것같습니다. 문제에서 그런 사소한 점으로 정오답이 갈리게 해놨을까 이러한 생각을 무의식에 가지고 있기도 했던 것 같습니다.

 

쉬운 문제나 어려운 문제를 구분하지 않고 항상 최선의 코드를 짤 수 있는 사람이 되겠다는 생각이 들었습니다. 

 

def isPalindrome(s):
    ln = len(s)
    i = 0
    j = ln-1
    con = True
    
    while i<=j:
        if s[i]!=s[j]:
            con = False
            break
            
        i+=1
        j-=1
        
    return con
    
def solution(s):
    answer = 1
    c = False
    
    for i in range(len(s),0,-1):
        for j in range(0, len(s)):
            splited_s = s[j:j+i]
            if (j+i)>len(s):
                continue
            # print(i,j+1,splited_s)
            if isPalindrome(splited_s):
                answer = len(splited_s)
                c = True
                break
            if c:
                break
        if c:
            break
            
    if len(s)==2:
        if s[0]==s[1]:
            answer = 2
    
    return answer