문제
leetcode.com/problems/intersection-of-two-arrays/
코드
- set.intersection 이용
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
nums1 = sorted(list(set(nums1)))
nums2 = sorted(list(set(nums2)))
return list(set(nums1).intersection(nums2))
집합 연산 메서드들
1) 합집합
| 연산자는 합집합(union)을 구하며 OR 연산자 |를 사용한다.
다음은 세트 {1, 2, 3, 4}와 {3, 4, 5, 6}을 모두 포함하므로 {1, 2, 3, 4, 5, 6}이 나온다.
- 세트1 | 세트2
- set.union(세트1, 세트2)
>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5, 6}
>>> a | b
{1, 2, 3, 4, 5, 6}
>>> set.union(a, b)
{1, 2, 3, 4, 5, 6}
2) 교집합
& 연산자는 교집합(intersection)을 구하며 AND 연산자 &를 사용한다.
다음은 세트 {1, 2, 3, 4}와 {3, 4, 5, 6} 중에서 겹치는 부분을 구하므로 {3, 4}가 나온다.
- 세트1 & 세트2
- set.intersection(세트1, 세트2)
>>> a & b
{3, 4}
>>> set.intersection(a, b)
{3, 4}
3) 차집합
- 연산자는 차집합(difference)을 구하며 뺄셈 연산자 -를 사용한다.
다음은 {1, 2, 3, 4}에서 {3, 4, 5, 6}과 겹치는 3과 4를 뺐으므로 {1, 2}가 나온다.
- 세트1 - 세트2
- set.difference(세트1, 세트2)
>>> a - b
{1, 2}
>>> set.difference(a, b)
{1, 2}
4) 대칭차집합
^ 연산자는 대칭차집합(symmetric difference)을 구하며 XOR 연산자 ^를 사용한다.
대칭차집합은 XOR 연산자의 특성을 그대로 따르는데 XOR은 서로 다르면 참이다. 따라서 집합에서는 두 집합 중 겹치지 않는 요소만 포함한다. 다음은 세트 {1, 2, 3, 4}와 {3, 4, 5, 6} 중에서 같은 값 3과 4를 제외한 다른 모든 요소를 구하므로 {1, 2, 5, 6}이 나온다.
- 세트1 ^ 세트2
- set.symmetric_difference(세트1, 세트2)
>>> a ^ b
{1, 2, 5, 6}
>>> set.symmetric_difference(a, b)
{1, 2, 5, 6}
참고 사이트
'⏳ 알고리즘 > python 알고리즘 문제 풀이' 카테고리의 다른 글
리트코드 - 206. Reverse Linked List (0) | 2021.05.09 |
---|---|
리트코드 - 21. Merge Two Sorted Lists (0) | 2021.05.09 |
프로그래머스 - LV3. 가장 긴 팰린드롬 (0) | 2021.05.02 |
프로그래머스 - LV2. 튜플(2019 카카오 개발자 겨울 인턴십) (0) | 2021.04.30 |
프로그래머스 - LV3. 2*n 타일링 (0) | 2021.04.29 |