문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
3개의 배열 nums1, nums2, nums3이 주어졌을 때, 3개의 배열에서 적어도 2곳에 포함된 모든 값을 포함하고 중복 없는 배열을 반환해라. 값의 순서는 상관없다.
#1
Input: nums1 = [1, 1, 3, 2], nums2 = [2, 3], nums3 = [3]
Output: [3, 2]
#2
Input: nums1 = [3, 1], nums2 = [2, 3], nums3 = [1, 2]
Output: [2, 3, 1]
#3
Input: nums1 = [1, 2, 2], nums2 = [4, 3, 3], nums3 = [5]
Output: []
class Solution {
public List<Integer> twoOutOfThree(int[] nums1, int[] nums2, int[] nums3) {
HashSet<Integer> hs1 = new HashSet<>();
HashSet<Integer> hs2 = new HashSet<>();
HashSet<Integer> hs3 = new HashSet<>();
HashSet<Integer> all = new HashSet<>();
for(int num : nums1){
hs1.add(num);
all.add(num);
}
for(int num : nums2){
hs2.add(num);
all.add(num);
}
for(int num : nums3){
hs3.add(num);
all.add(num);
}
ArrayList<Integer> result = new ArrayList<>();
for(int num : all){
int count = 0;
if(hs1.contains(num)){
count++;
}
if(hs2.contains(num)){
count++;
}
if(hs3.contains(num)){
count++;
}
if(count > 1){
result.add(num);
}
}
return result;
}
}