본문 바로가기

Programmers/프로그래머스

[Programmers] 가장 긴 팰린드롬

*O(n^2)로 해결 O(n)으로 하는 방법은 없을까..?

*dp를 이용해서 i는 시작점 / j는 도착점으로 간주해서 팰린드롬이면 dp[i][j] = true 로 저장한다. 

*자기 자신은 항상 팰린드롬 

aa, bb -> 길이가 2인 팰린드롬 

 

*for (len => 비교할 길이)

    for (시작점-> n-len) 

      int j = 도착점

       if (s[i] == s[j] && dp[i+1][j-1] : 범위를 좁혀가면서 팰린드롬인지 확인) 

         dp[i][j] = true;

         answer의 최대값을 비교한다.  

 

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

[Programmers] 땅따먹기  (0) 2020.04.04
[Programmers] 문자열 압축  (0) 2020.04.04
[Programmers] N-Queen  (0) 2020.04.03
[Programmers] 방문 길이  (0) 2020.04.03
[Programmers] 종이접기  (0) 2020.04.03