엔지니어 블로그

[Leetcode]2657. Find the Prefix Common Array of Two Arrays 본문

알고리즘

[Leetcode]2657. Find the Prefix Common Array of Two Arrays

안기용 2025. 1. 14. 13:51


풀이

배열 B에 배열 A의 원소 값이 몇번이나 포함되어 있는지 확인하면 되는 문제다.

이 문제는 처음에 for문을 가지고 간단히 구현해봤는데, 정답은 맞았지만 2번의 for문으로 인해 복잡도가 높아져 응답시간이 느린 코드가 되었다. 

그래서 솔루션을 살짝 보니 훨씬 간단한 방법이 있었다.

 

코드

#정답코드
class Solution:
    def findThePrefixCommonArray(self, A: List[int], B: List[int]) -> List[int]:
        n = len(A)
        ans = []
        seen = [0] * (n + 1)
        common = 0
        
        for i in range(n):
            if seen[A[i]] == 0:
                seen[A[i]] = 1
            elif seen[A[i]] == 1:
                common += 1
            if seen[B[i]] == 0:
                seen[B[i]] = 1
            elif seen[B[i]] == 1:
                common += 1
            ans.append(common)
        return ans


#느린코드
class Solution:
    def findThePrefixCommonArray(self, A: list[int], B: list[int]) -> list[int]:
        N = len(A)
        ans = []
        cnt = 0
        for n in range(N):
            cnt = 0
            for a in A[:n+1]:
                if a in B[:n+1]:
                    cnt += 1
            ans.append(cnt)
        return ans