C#에서는 LINQ를 활용하면 배열이나 리스트에 포함된 최댓값, 최솟값, 그리고 두 번째로 큰 값과 작은 값을 아주 간단하게 구할 수 있습니다. 이 글에서는 Max(), Min(), OrderBy() 등의 LINQ 메서드를 사용하는 방법을 예제와 함께 살펴보겠습니다.
리스트 설정하기
먼저 정수형 배열을 선언합니다.
var val = new int[] {
99,
35,
26,
87
};최댓값 구하기
Max() 메서드를 사용하면 컬렉션에서 가장 큰 숫자를 손쉽게 얻을 수 있습니다.
val.Max(z => z);
최솟값 구하기
Min() 메서드는 컬렉션에서 가장 작은 숫자를 반환합니다.
val.Min(z => z);
두 번째로 큰 값 구하기
OrderByDescending()으로 내림차순 정렬한 뒤, Skip(1)로 첫 번째 요소(최댓값)를 건너뛰고 First()로 그다음 요소를 가져오면 두 번째로 큰 값을 구할 수 있습니다.
val.OrderByDescending(z => z).Skip(1).First();
두 번째로 작은 값 구하기
마찬가지로 OrderBy()로 오름차순 정렬한 후 Skip(1)과 First()를 조합하면 두 번째로 작은 값을 얻을 수 있습니다.
val.OrderBy(z => z).Skip(1).First();
전체 코드
지금까지 설명한 내용을 모두 포함한 전체 예제 코드는 다음과 같습니다.
예제
using System;
using System.Linq;
public class Program {
public static void Main() {
var val = new int[] {
99,
35,
26,
87
};
var maxNum = val.Max(z => z);
Console.WriteLine("Maximum Number: " + maxNum);
var minNum = val.Min(z => z);
Console.WriteLine("Minimum Number: " + minNum);
var secondMax = val.OrderByDescending(z => z).Skip(1).First();
Console.WriteLine("Second Largest Number: " + secondMax);
var secondMin = val.OrderBy(z => z).Skip(1).First();
Console.WriteLine("Second Smallest Number: " + secondMin);
}
}실행 결과
Maximum Number: 99 Minimum Number: 26 Second Largest Number: 87 Second Smallest Number: 35