class Solution:
def maxUncrossedLines(self, nums1: List[int], nums2: List[int]) -> int:
# 가장 긴 공통 수열 길이 찾는 것과 동일
len1 = len(nums1)
len2 = len(nums2)
dp = [[0] * (len2+1) for _ in range(len1+1)]
for i in range(1, len1+1):
for j in range(1, len2+1):
if nums1[i-1] == nums2[j-1]:
dp[i][j] = dp[i-1][j-1] + 1
else:
dp[i][j] = max(dp[i-1][j], dp[i][j-1])
return dp[-1][-1]
'LeetCode > DP심화' 카테고리의 다른 글
309. Best Time to Buy and Sell Stock with Cooldown ★★★ (0) | 2025.01.07 |
---|---|
1312. Minimum Insertion Steps to Make a String Palindrome (0) | 2025.01.06 |
1964. Find the Longest Valid Obstacle Course at Each Position ★★★ (0) | 2025.01.06 |
354. Russian Doll Envelopes ★★★ (0) | 2025.01.06 |
1027. Longest Arithmetic Subsequence (1) | 2025.01.05 |