📚
Array Intersection
Array Intersection - Explanation
보통 배열 O(n*m) O(min(n,m))
Problem Summary
Write a function that returns elements common to both arrays.
Go to Problem →Detailed Explanation
이 문제는 **filter와 includes**를 조합하여 두 배열의 교집합을 구하는 방법을 학습합니다. ## 핵심 개념: 집합 연산 - 교집합 교집합은 두 집합에 공통으로 존재하는 요소들의 집합입니다. ### 접근 방법 ```javascript arr1.filter(x => arr2.includes(x)) ``` - arr1의 각 요소에 대해 - arr2에 포함되어 있는지 확인 - 포함된 요소만 남김 ### filter와 includes 조합 이 패턴은 집합 연산에서 매우 자주 사용됩니다: - 교집합: filter(x => arr2.includes(x)) - 차집합: filter(x => !arr2.includes(x)) - 합집합: [...new Set([...arr1, ...arr2])] ### Set을 사용한 최적화 배열이 크면 includes가 O(n)이므로 비효율적입니다: ```javascript const set2 = new Set(arr2); arr1.filter(x => set2.has(x)); // O(1) 검색 ``` 이렇게 하면 전체 시간복잡도를 O(n*m)에서 O(n+m)으로 줄일 수 있습니다.
Solution Code
solution.js
function intersection(arr1, arr2) {
return arr1.filter(x => arr2.includes(x));
}Key Concepts from This Problem
1. filter 메서드
2. includes 메서드
3. 교집합
4. 집합 연산
Common Mistakes
✗ 큰 배열에서 includes는 느릴 수 있으므로 Set 사용을 고려하세요
✗ 중복 요소가 있으면 결과에도 중복이 포함됩니다
✗ 객체 배열에서는 includes가 참조 비교를 하므로 주의해야 합니다
Hints
Hint 1: filter와 includes를 조합하세요.
Complexity Analysis
Time Complexity
O(n*m)
Space Complexity
O(min(n,m))
Related Tags
#배열 #filter #집합