알고리즘

[알고리즘] 집합 (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