알고리즘
[알고리즘] 집합 (Set)
취업 드가자잇
2024. 6. 13. 21:38
배열 합집합
전개연산자 spread operator(...)와 Set을 사용하여 두 배열을 병합하고 모든 중복된 요소를 제거할 수 있다.
let arrA = [1, 2, 3, 4];
let arrB = [5, 6, 7, 2, 1];
[...new Set([...arrA, ...arrB])]; // returns [1, 2, 3, 4, 5, 6, 7]
배열 교집합
filter와 includes을 사용하여 두 배열에 서로 포함된 요소들을 알 수 있다.
includes() 함수는 배열이 특정값을 포함하고 있는지의 여부를 boolean 값으로 반환한다.
let arrA = [1, 2, 3, 4];
let arrB = [1, 2, 5, 6, 7];
arrA.filter(e => arrB.includes(e)); // returns [1, 2]
// set을 사용하여 중복을 제거한 버전
function intersection(setA, setB) {
let intersection = new Set();
for (let elem of setA) {
if (setB.has(elem)) {
intersection.add(elem);
}
}
return intersection;
}
배열 부분집합
every와 includes를 사용하여 한 배열의 모든 요소가 다른 배열에 포함되어 있는지 확인할 수 있다.
function isSubset(setA, setB) {
return setA.every(element => setB.includes(element));
}
const setC = [1, 2, 3, 4, 5, 6];
const setA = [1, 2, 4, 6];
console.log(isSubset(setA, setC)); // true