본문 바로가기
알고리즘

[알고리즘] Maximum Length of Repeated Subarray

by keel_im 2021. 7. 8.
반응형

포인트

  • LCS 를 물어보는 문제입니다. LCS 도 2가지 종류가 있습니다. 1. Longest Common Substring 과 2. Longest Common Subsequence 입니다. 
  • 1. Longest Common Substring 는 최장 공통 문자열로 '연속된' 공통 문자에 관한 것입니다.
  • 2. Longest Common Subsequence 는 부분 수열중 최장의 길이를 나타내는 것입니다. 
    2개다 연관이 되어 있으나 점화식은 다를 수 있으니 주의하시기 바랍니다.

🧶문서는 항상 수정될 수 있습니다. 비판은 환영합니다. 

예시) [0,0,0,0,0], [0,0,0,0,0]

[0, 0, 0, 0, 0, 0]
[0, 1, 1, 1, 1, 1]
[0, 1, 2, 2, 2, 2]
[0, 1, 2, 3, 3, 3]
[0, 1, 2, 3, 4, 4]
[0, 1, 2, 3, 4, 5]

결과로 5가 최댓값을 가짐으로 이 문제에서 최장 공통 문자열의 길이는 5입니다. 

python

class Solution:
    def findLength(self, nums1: List[int], nums2: List[int]) -> int:
        nums1.insert(0, 0)
        nums2.insert(0, 0)
        d = [[0] * len(nums1) for _ in range(len(nums2))]
        value = 0
        for i in range(len(nums1)):
            for j in range(len(nums2)):
                if i == 0 or j == 0:
                    d[i][j] = 0
                elif nums1[i] == nums2[j]:
                    d[i][j] = d[i - 1][j - 1] + 1
                else:
                    d[i][j] = 0
                value = max(value, d[i][j])

        return value
반응형

'알고리즘' 카테고리의 다른 글

[알고리즘] Valid Triangle Number  (0) 2021.07.15
[알고리즘] Custom Sort String  (0) 2021.07.15
[알고리즘] Arrays: Left Rotation  (0) 2021.07.05
[알고리즘] Candy  (0) 2021.06.27
[알고리즘] 미로 만들기  (0) 2021.06.16

댓글