알고리즘

합계 알고리즘 알아보기 (Linq, Extension Method)

MAJG 2023. 2. 15. 22:00
반응형

합계알고리즘이란 주어진 입력을 모두 더해 합한 값을 출력하는 알고리즘 입니다.

예를들어 한 학급에서 80점 이상의 점수를 받은 학생들의 총점을 알고싶다면 for문과 if문을 사용할 수 있습니다.

public class SumAlgorithm {
    int[] scores = {100, 80, 75, 43, 95, 82, 80, 79 };
    int sum = 0;

    // 합계 알고리즘
    for(int i = 0; i < scores.Length; i++) {
        if(scores[i] >= 80) sum += scores[i];
    }

    Console.WriteLine($"{scores.Length}명의 학생들 중 80점 이상을 받은 학생의 총점은 {sum}점 입니다.");
}

위의 코드에서는 scores라는 배열안에서 80 이상의 값을 모두 더하는 로직을 으로 표현했습니다.
우리가 작성한 형식의 코드를 Linq를 사용해 으로 표현해 보겠습니다.

Console.WriteLine($"Linq : {scores.Length}명의 학생들 중 80점 이상을 받은 학생의 총점은 {scores.Where(s => s >= 80).Sum()}점 입니다.");

으로 표현한 코드에서 Where()에서는 우리가 필터링해야할 조건을 넘겨주었습니다. 그리고 Sum()을 사용해 총점을 반환합니다.
이 코드를 확장 메서드를 통해 구현하면 아래와 같이 사용할 수 있습니다.

static class Extension {
    public static int Sum(this int[] arr, Func<int, bool> ex) {
        int sum = 0;

        for (int i = 0; i < arr.Length; i++) {
            if (ex(arr[i])) sum += arr[i];
        }

        return sum;
    }
}

Console.WriteLine($"Extension : {scores.Length}명의 학생들 중 80점 이상을 받은 학생의 총점은 {scores.Sum(s => s >= 80)}점 입니다.");
반응형