Menu
Coddy logo textTech

부분집합과 상위집합

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

집합 A의 모든 원소가 집합 B의 원소일 때, 집합 A를 집합 B의 부분집합이라고 합니다. 반대로, 집합 B가 집합 A의 모든 원소를 포함하고 있다면, B를 A의 상위집합이라고 합니다.

두 집합에 포함된 원소가 정확히 같다면 두 집합은 동일합니다. 예를 들어 몇 가지 테스트를 만들어 보겠습니다:

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 isSubset(setA, setB) {
  return [...setA].every(element => setB.has(element));
}

setA가 setB의 상위 집합인지 확인하는 함수:

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라는 함수를 만드세요. 이 함수는 배열을 세트(set)로 변환하고 다음 속성을 가진 객체를 반환해야 합니다:

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

치트 시트

집합 A의 모든 원소가 집합 B의 원소이기도 하면, 집합 A는 집합 B의 부분 집합(subset)입니다. 반대로, 집합 B가 집합 A의 모든 원소를 포함하고 있다면 B는 A의 상위 집합(superset)입니다. 두 집합이 정확히 동일한 원소들을 포함하고 있다면 두 집합은 동일(equal)합니다.

setA가 setB의 부분 집합인지 확인합니다:

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

setA가 setB의 상위 집합인지 확인합니다:

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

두 집합이 동일한지 확인합니다:

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

직접 해보기

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실력 점검

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

논리 & 흐름의 모든 레슨