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

C#으로 리스트에서 최댓값, 최솟값, 두 번째로 큰 값, 두 번째로 작은 값 찾기

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