본문 바로가기
알고리즘/프로그래머스

가장 긴 팰린드롬 python

by 1.5볼트 2023. 5. 23.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12904

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

팰린드롬의 특성은 대칭이다
모든 시작점에서 팰린드롬이 가능한 건 모두 조사한다
현재 자리에서 양옆으로 퍼져나가면서 두 값이 같다면 이건 대칭이니까 팰린드롬이다 이런 식으로 한쪽이 문자열의 끝까지 가거나 다른 값이 나올 때까지 진행한다
멈추었을 때 반복한 회수가 팰린드롬길이 이다

팰린드롬 길이가 홀수일 때와 짝수일 때 방법이 약간 다른데
홀수일 때는 현재 자리 현재의 양옆 그 양옆 순서를 숫자로 표현하면 21012 이런 식으로 진행하고
짝수일 때는 210012 이런 식으로 진행한다 시작 값만 다르고 다른 건 똑같다

 

def solution(t):
    m=1
    l=len(t)
    for i in range(l):
        s=s1=0
        a=b=1
        for j in range(min(i,l-i)+1):
            if a==1:
                if i+j<l and t[i-j]==t[i+j]:
                    s+=1
                else:
                    a=0
            if b==1:
                if i+j+1<l and t[i-j]==t[i+j+1]:
                    s1+=1
                else:
                    b=0
            if a+b==0:
                break
        a=max(s*2-1,s1*2)
        if a>m:
            m=a
    return m

'알고리즘 > 프로그래머스' 카테고리의 다른 글

할인 행사  (0) 2023.05.31
숫자 게임 python  (0) 2023.05.24
기지국 설치 python  (0) 2023.05.22
스킬트리 - python  (0) 2023.05.20
H-Index  (0) 2023.05.18

댓글