Menu
Coddy logo textTech

부분집합과 상위집합

Coddy JavaScript 여정의 논리 & 흐름 섹션에 포함된 레슨. 65개 중 40번째.

집합 A는 A의 every element가 B의 element이기도 하다면 집합 B의 subset입니다. 반대로 B는 A의 모든 element를 포함한다면 A의 superset입니다.

두 sets는 정확히 동일한 원소를 포함하고 있으면 같습니다. 예를 들어 테스트를 몇 가지 만들어 보겠습니다.

const setA = new Set([1, 2, 3]);
const setB = new Set([1, 2, 3, 4, 5]);
const setC = new Set([1, 2, 3]);
const setD = new Set([6, 7, 8]);

setA가 setB의 부분집합인지 확인하는 function:

function isSubset(setA, setB) {
  return [...setA].every(element => setB.has(element));
}

setA가 setB의 superset인지 확인하는 function:

function isSuperset(setA, setB) {
  return isSubset(setB, setA);
}

두 집합이 같은지 확인하는 함수:

function areEqual(setA, setB) {
  return setA.size === setB.size && isSubset(setA, setB);
}

부분 집합 관계 테스트:

// A는 B의 부분집합인가? 
isSubset(setA, setB) // true
// B는 A의 부분집합인가? 
isSubset(setB, setA) // false
// D는 B의 부분집합인가? 
isSubset(setD, setB) // false

superset 관계 테스트:

// B는 A의 상위 집합인가?
isSuperset(setB, setA) // true
// A는 B의 상위 집합인가?
isSuperset(setA, setB) // false

동등성 테스트:

// A는 C와 같은가?
areEqual(setA, setC) // true
// A는 B와 같은가?
areEqual(setA, setB) // false
// A는 D와 같은가?
areEqual(setA, setD) // false
challenge icon

챌린지

쉬움

arr1arr2라는 두 배열을 매개변수로 받는 analyzeSetRelations 함수를 만드세요. 이 함수는 배열을 집합으로 변환하고 다음 속성을 가진 객체를 반환해야 합니다:

  • isSubset: set1set2의 부분 집합인지 나타내는 불리언 값
  • isSuperset: set1set2의 상위 집합인지 나타내는 불리언 값
  • isEqual: set1set2가 정확히 동일한 요소를 가지고 있는지 나타내는 불리언 값

직접 해보기

function analyzeSetRelations(arr1, arr2) {
    let set1 = new Set(arr1);
    let set2 = new Set(arr2);

    // .every()와 .has()를 사용하여 집합 관계를 확인합니다
    let isSubset = false;   // TODO: set1의 모든 요소가 set2에 존재하는지 확인
    let isSuperset = false; // TODO: set2의 모든 요소가 set1에 존재하는지 확인
    let isEqual = false;    // TODO: 두 집합의 크기가 같고 isSubset이 true인지 확인

    return {
        isSubset: isSubset,
        isSuperset: isSuperset,
        isEqual: isEqual
    };
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨

직접 연습해 보세요: 온라인 JavaScript 컴파일러