Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 SortedSet이 지정된 컬렉션의 진부분집합인지 확인하는 방법

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가 반환된 것입니다.