C# 배열에서 K번째로 작은 요소 찾기
C# 프로그래밍에서 배열 안에서 K번째로 작은 요소를 찾아야 하는 경우가 종종 있습니다. 이 글에서는 Array.Sort() 메서드를 활용해 이 문제를 간단하고 효율적으로 해결하는 방법을 단계별로 살펴보겠습니다.
1단계: 배열 선언하기
먼저 정수형 1차원 배열을 선언합니다.
int[] a = new int[] {
65,
45,
32,
97,
23,
75,
59
};
2단계: 배열 정렬하기
K번째로 작은 값을 구하려면 먼저 배열을 오름차순으로 정렬해야 합니다. C#에서는 Array.Sort() 메서드 한 줄로 간단히 처리할 수 있습니다.
Array.Sort(a);
정렬이 완료되면 배열의 요소들은 다음과 같이 작은 값부터 차례대로 배치됩니다.
23, 32, 45, 59, 65, 75, 97
3단계: K번째로 작은 요소에 접근하기
배열의 인덱스는 0부터 시작하므로, K번째로 작은 요소는 인덱스 k - 1에 위치합니다. 예를 들어 5번째로 작은 값을 구하려면 다음과 같이 접근합니다.
a[k - 1];
전체 코드 예제
지금까지의 과정을 하나의 완성된 프로그램으로 정리하면 다음과 같습니다.
using System;
using System.IO;
using System.CodeDom.Compiler;
namespace Program {
class Demo {
static void Main(string[] args) {
int[] a = new int[] {
65,
45,
32,
97,
23,
75,
59
};
// k번째로 작은 요소
int k = 5;
Array.Sort(a);
Console.WriteLine("정렬된 배열...");
for (int i = 0; i < a.Length; i++) {
Console.WriteLine(a[i]);
}
Console.Write(k + "번째로 작은 요소 = ");
Console.WriteLine(a[k - 1]);
}
}
}
실행 결과
정렬된 배열... 23 32 45 59 65 75 97 5번째로 작은 요소 = 65
마무리
이처럼 Array.Sort()로 배열을 정렬한 뒤 인덱스 k - 1에 접근하는 방식만으로도 K번째로 작은 요소를 손쉽게 구할 수 있습니다. 이 방법의 시간 복잡도는 O(n log n)으로, 데이터 크기가 크지 않은 대부분의 실무 상황에서 충분히 실용적입니다. 만약 매우 큰 데이터셋에서 자주 조회해야 한다면 우선순위 큐(힙)나 선택 알고리즘(Quickselect)을 활용하는 것도 좋은 대안입니다.