반응형
합계알고리즘이란 주어진 입력을 모두 더해 합한 값을 출력하는 알고리즘 입니다.
예를들어 한 학급에서 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)}점 입니다.");
반응형