부분집합과 상위집합
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챌린지
쉬움두 개의 배열 arr1과 arr2를 매개변수로 받는 analyzeSetRelations라는 함수를 만드세요. 이 함수는 배열을 세트(set)로 변환하고 다음 속성을 가진 객체를 반환해야 합니다:
isSubset:set1이set2의 부분 집합인지 여부를 나타내는 불리언(boolean) 값isSuperset:set1이set2의 상위 집합인지 여부를 나타내는 불리언(boolean) 값isEqual:set1과set2가 정확히 동일한 요소를 가지고 있는지 여부를 나타내는 불리언(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
};
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.