Longest Common Subsequence

박수빈·2022년 2월 23일
0

leetcode

목록 보기
29/51


문제

  • text1, text2의 공통된 가장 긴 subsequence
  • 길이 리턴
  • 연속된 문자열은 아니고, 순서만 맞으면 됨

풀이

  • 2차원 dp
class Solution:
    def longestCommonSubsequence(self, text1: str, text2: str) -> int:
        lenText1 = len(text1)
        lenText2 = len(text2)
        dp = [[0 for _ in range(lenText1+1)] for _ in range(lenText2+1)]
        maxi = -1
        
        for i in range(1, lenText2+1):
            for j in range(1, lenText1+1):
                if text2[i-1] == text1[j-1]:
                	# 같을경우, 이 자리 전까지 가장 긴 + 1
                    dp[i][j] = max(dp[i-1][:j]) + 1
                else:
                	# 다를 경우, 이 자리까지에서 가장 긴 
                    dp[i][j] = max(dp[i-1][:j+1]) 
                maxi = max(maxi, dp[i][j])
        
        return maxi

결과

아 넘 하기싫어가지고,,,
여러번 해서 맞췃다...

profile
개발자가 되고 싶은 학부생의 꼼지락 기록

0개의 댓글