Algorithms/LeetCode

[LeetCode] 2215. Find the Difference of Two Arrays

junhwa100 2024. 11. 12. 15:51

1. 문제 이해

두 개의 정수 리스트 nums1과 nums2가 주어진다.

크기가 2인 리스트 answer을 리턴한다.

answer[0]은 nums1에만 있고 nums2에는 없는 모든 고유 정수의 리스트이다.
answer[1]은 nums2에만 있고 nums1에는 없는 모든 고유 정수의 리스트이다.

 

 

2. 풀이 과정

Python의 set 자료형을 사용한다.

리스트를 set으로 변환시키고 각각 차집합을 구한다.

 

처음 짠 코드는 다음과 같다.

class Solution:
    def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]:
        nums1 = set(nums1)
        nums2 = set(nums2)
        answer = []
        answer[0].append(nums1 - nums2) 
        answer[1].append(nums2 - nums1)

        return answer

answer 리스트를 빈 리스트로 초기화한 뒤 바로 answer[0]과 answer[1]에 값을 할당하려고 하는 오류를 범했다.

직접 0과 1을 지정하여 추가할 수 있다고 생각했다.

 

Python의 리스트는 빈 상태에서는 인덱스를 직접 지정하여 값을 추가할 수 없다. 
리스트에 인덱스로 접근하려면, 해당 위치에 이미 값이 있어야 한다.

 

다음과 같이 수정한다.

answer.append(list(nums1 - nums2))
answer.append(list(nums2 - nums1))

 

 

3. 전체 코드

class Solution:
    def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]:
        nums1 = set(nums1)
        nums2 = set(nums2)
        answer = []
        answer.append(list(nums1 - nums2))
        answer.append(list(nums2 - nums1))

        return answer

 

 

4. 생각할 점

- set 자료형을 활용해 차집합을 간단히 구할 수 있다는 발상

- 빈 리스트에 바로 인덱스를 지정하여 값을 넣으려고 시도한 것은 컴퓨터의 입장을 전혀 고려하지 않은 부끄러운 시도!

 

 

5. 출처

- https://leetcode.com/problems/find-the-difference-of-two-arrays/?envType=study-plan-v2&envId=leetcode-75