
📌 문제 요약
주어진 두 정수 배열 nums1과 nums2
각각 nums1에는 있지만 nums2에는 없는 숫자와 nums2에는 있지만 nums1에는 없는 숫자를 구해서 두 개의 리스트로 반환하라.
반환되는 리스트의 첫 번째 요소는 nums1에서만 존재하는 값들, 두 번째 요소는 nums2에서만 존재하는 값들을 포함해야 한다.
💡 풀이 포인트
- 중복된 숫자는 결과에 한 번만 포함
- 각 배열에서 상대 배열에 없는 값을 찾아내야 함.
- 두 개의 리스트로 반환됨.
✅ 풀이 방법
- nums1과 nums2에서 중복을 제거한 후 각 배열의 차집합을 구합니다.
- 차집합 = 하나의 집합에서 다른 집합의 원소 제외한 결과
- nums1에만 있는 원소 = nums1 - nums2
nums2에만 있는 원소 = nums2 - nums1 - 두 차집합을 각각 리스트 형태로 반환
import java.util.*;
class Solution {
public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
// 배열 nums1과 nums2의 값들을 set에 추가
for (int num : nums1) {
set1.add(num);
}
for (int num : nums2) {
set2.add(num);
}
// 차집합
Set<Integer> onlyInNums1 = new HashSet<>(set1);
onlyInNums1.removeAll(set2); // nums1에만 있는 값들
Set<Integer> onlyInNums2 = new HashSet<>(set2);
onlyInNums2.removeAll(set1); // nums2에만 있는 값들
List<List<Integer>> result = new ArrayList<>();
result.add(new ArrayList<>(onlyInNums1));
result.add(new ArrayList<>(onlyInNums2));
return result;
}
}
'자율 학습 > 스터디' 카테고리의 다른 글
| [LeetCode 75] 215. Kth Largest Element in an Array (1) | 2025.03.25 |
|---|---|
| [LeetCode] 2352. Equal Row and Column Pairs (0) | 2025.03.18 |
| [LeetCode] 933. Number of Recent Calls (0) | 2025.03.11 |
| [LeetCode] 735. Asteroid Collision 문제 풀이 (0) | 2025.03.11 |
| [Docker] Docker container graceful shutdown (SIGTERM) (0) | 2024.06.23 |