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

C# SortedSet에서 최소값(Min) 구하는 방법 완벽 정리

C#에서 SortedSet에 저장된 최소값을 확인하려면 Min 속성을 사용하면 됩니다. SortedSet은 요소가 항상 정렬된 상태로 자동 유지되기 때문에, 별도의 정렬 작업 없이 MinMax 속성만으로 가장 작은 값과 가장 큰 값을 즉시 얻을 수 있습니다.

아래에서 문자열과 정수를 다루는 두 가지 예제를 통해 사용 방법을 살펴보겠습니다.

예제 1 – 문자열 SortedSet에서 최소값·최대값 구하기

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      SortedSet<string> set1 = new SortedSet<string>();
      set1.Add("AB");
      set1.Add("BC");
      set1.Add("CD");
      set1.Add("EF");

      Console.WriteLine("Elements in SortedSet1...");
      foreach (string res in set1) {
         Console.WriteLine(res);
      }

      Console.WriteLine("Maximum element in SortedSet1 = " + set1.Max);
      Console.WriteLine("Minimum element in SortedSet1 = " + set1.Min);

      SortedSet<string> set2 = new SortedSet<string>();
      set2.Add("BC");
      set2.Add("CD");
      set2.Add("DE");
      set2.Add("EF");
      set2.Add("AB");
      set2.Add("HI");
      set2.Add("JK");

      Console.WriteLine("Elements in SortedSet2 (Enumerator for SortedSet)...");
      SortedSet<string>.Enumerator demoEnum = set2.GetEnumerator();
      while (demoEnum.MoveNext()) {
         string res = demoEnum.Current;
         Console.WriteLine(res);
      }

      Console.WriteLine("Maximum element in SortedSet2 = " + set2.Max);
      Console.WriteLine("Minimum element in SortedSet2 = " + set2.Min);
   }
}

실행 결과

Elements in SortedSet1...
AB
BC
CD
EF
Maximum element in SortedSet1 = EF
Minimum element in SortedSet1 = AB
Elements in SortedSet2 (Enumerator for SortedSet)...
AB
BC
CD
DE
EF
HI
JK
Maximum element in SortedSet2 = JK
Minimum element in SortedSet2 = AB

위 예제에서 볼 수 있듯이, 문자열 집합의 경우 사전순(알파벳 순)으로 정렬되므로 최소값은 "AB", 최대값은 마지막 알파벳 순서의 문자열이 됩니다. 또한 GetEnumerator() 메서드를 사용하면 열거자(Enumerator)를 통해 정렬된 순서대로 요소를 하나씩 순회할 수 있습니다.

예제 2 – 정수 SortedSet에서 최소값·최대값 구하기

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      SortedSet<int> set1 = new SortedSet<int>();
      set1.Add(5);
      set1.Add(50);
      set1.Add(20);
      set1.Add(10);
      set1.Add(70);
      set1.Add(60);
      set1.Add(55);
      set1.Add(95);

      Console.WriteLine("Elements in SortedSet...");
      foreach (int res in set1) {
         Console.WriteLine(res);
      }

      Console.WriteLine("Maximum element in SortedSet = " + set1.Max);
      Console.WriteLine("Minimum element in SortedSet = " + set1.Min);
   }
}

실행 결과

Elements in SortedSet...
5
10
20
50
55
60
70
95
Maximum element in SortedSet = 95
Minimum element in SortedSet = 5

요소를 추가한 순서와 관계없이 출력 시 항상 오름차순으로 정렬되어 있으며, Min은 5, Max는 95를 반환하는 것을 확인할 수 있습니다.

핵심 정리

  • Min 속성: SortedSet에 저장된 값 중 가장 작은 값을 반환합니다.
  • Max 속성: SortedSet에 저장된 값 중 가장 큰 값을 반환합니다.
  • SortedSet은 내부적으로 레드-블랙 트리 같은 자가 균형 이진 검색 트리 구조를 사용해 정렬 상태를 유지하므로, Min/Max 조회가 매우 효율적입니다.
  • 문자열은 사전순, 숫자는 크기순으로 최소·최대가 결정됩니다.
  • 주의할 점은 빈 SortedSet에서 Min이나 Max에 접근하면 InvalidOperationException이 발생하므로, 사용 전에 Count 속성으로 요소 존재 여부를 확인하는 것이 안전합니다.