C#에서 SortedSet 개체가 지정된 컬렉션의 진부분집합(proper subset)인지 확인하려면 IsProperSubsetOf() 메서드를 사용합니다.
진부분집합이란 한 집합이 다른 집합에 완전히 포함되면서도, 두 집합이 서로 같지 않은 경우를 의미합니다. 즉, 부분집합이면서 최소한 하나 이상의 요소가 상대 집합에는 있지만 자신에게는 없어야 합니다.
예제 1: 진부분집합인 경우
다음 예제에서는 set2의 모든 요소(20, 40, 60)가 set1에 포함되어 있고, set1에는 set2에 없는 추가 요소들이 있으므로 set2는 set1의 진부분집합입니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(20);
set1.Add(40);
set1.Add(60);
set1.Add(80);
set1.Add(100);
set1.Add(120);
set1.Add(140);
Console.WriteLine("SortedSet1의 요소...");
foreach (int res in set1){
Console.WriteLine(res);
}
SortedSet<int> set2 = new SortedSet<int>();
set2.Add(20);
set2.Add(40);
set2.Add(60);
Console.WriteLine("SortedSet2의 요소...");
foreach (int res in set2){
Console.WriteLine(res);
}
Console.WriteLine("SortedSet2는 SortedSet1의 진부분집합인가? = " + set2.IsProperSubsetOf(set1));
}
}출력 결과
SortedSet1의 요소... 20 40 60 80 100 120 140 SortedSet2의 요소... 20 40 60 SortedSet2는 SortedSet1의 진부분집합인가? = True
set2의 모든 요소가 set1에 포함되어 있고, set1은 set2보다 많은 요소를 가지고 있으므로 결과는 True가 반환됩니다.
예제 2: 진부분집합이 아닌 경우
이번에는 두 집합이 완전히 동일한 요소를 가지는 경우를 살펴보겠습니다. 두 집합의 요소가 같으면 set2는 set1의 부분집합이지만, 진부분집합은 아닙니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(20);
set1.Add(40);
set1.Add(60);
Console.WriteLine("SortedSet1의 요소...");
foreach (int res in set1){
Console.WriteLine(res);
}
SortedSet<int> set2 = new SortedSet<int>();
set2.Add(20);
set2.Add(40);
set2.Add(60);
Console.WriteLine("SortedSet2의 요소...");
foreach (int res in set2){
Console.WriteLine(res);
}
Console.WriteLine("SortedSet2는 SortedSet1의 진부분집합인가? = " + set2.IsProperSubsetOf(set1));
}
}출력 결과
SortedSet1의 요소... 20 40 60 SortedSet2의 요소... 20 40 60 SortedSet2는 SortedSet1의 진부분집합인가? = False
핵심 정리
IsProperSubsetOf() 메서드는 다음과 같은 규칙으로 동작합니다.
- 현재 SortedSet의 모든 요소가 지정된 컬렉션에 포함되어야 합니다.
- 두 집합이 동일한 경우에는 진부분집합이 아니므로 False를 반환합니다.
- 현재 집합의 요소 수가 대상 컬렉션보다 같거나 많으면 False를 반환합니다.
따라서 예제 1에서는 set2가 set1보다 요소 수가 적고 모든 요소가 포함되어 True가 반환되었고, 예제 2에서는 두 집합이 동일하여 False가 반환된 것입니다.