본문 바로가기

⏳ 알고리즘/python 알고리즘 문제 풀이

리트코드 - 349. Intersection of Two Arrays

문제

leetcode.com/problems/intersection-of-two-arrays/

 

Intersection of Two Arrays - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

코드

- 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}

 

 

참고 사이트

dojang.io/mod/page/view.php?id=2315