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. 출처