C#에서 배열의 최댓값(maximum)과 최솟값(minimum)을 구하는 것은 프로그래밍 기초 중에서도 가장 자주 사용되는 알고리즘입니다. 핵심 원리는 간단합니다. 먼저 배열의 첫 번째 요소를 최댓값과 최솟값의 초기값으로 설정한 뒤, 나머지 모든 요소를 하나씩 비교하며 값을 갱신하는 방식입니다.
1. 기본 원리 이해하기
배열의 첫 번째 요소를 초기 기준값으로 지정하면, 반복문을 통해 나머지 요소들과 순차적으로 비교할 수 있습니다.
최댓값 찾기
현재 요소가 저장된 최댓값보다 크다면, 해당 요소로 최댓값을 교체합니다.
if(arr[i] > max) {
max = arr[i];
}최솟값 찾기
반대로 현재 요소가 저장된 최솟값보다 작다면, 해당 요소로 최솟값을 교체합니다.
if(arr[i] < min) {
min = arr[i];
}2. 전체 예제 코드
아래 예제는 정수형 배열에서 최댓값과 최솟값의 위치를 찾아 출력하는 전체 C# 프로그램입니다. 직접 실행해 보면서 동작 방식을 확인해 보세요.
예제
using System;
public class Demo {
public static void Main() {
int[] arr = new int[5] {99, 95, 93, 89, 87};
int i, max, min, n;
// 배열의 크기
n = 5;
// 첫 번째 요소를 초기값으로 설정
max = arr[0];
min = arr[0];
// 두 번째 요소부터 끝까지 반복하며 비교
for(i=1; i<n; i++) {
if(arr[i] > max) {
max = arr[i];
}
if(arr[i] < min) {
min = arr[i];
}
}
Console.Write("Maximum element = {0}\n", max);
Console.Write("Minimum element = {0}\n\n", min);
}
}실행 결과
Maximum element = 99 Minimum element = 87
3. 코드 동작 방식 설명
위 프로그램의 흐름을 단계별로 살펴보면 다음과 같습니다.
1단계: 크기가 5인 정수 배열 arr을 선언하고 값(99, 95, 93, 89, 87)으로 초기화합니다.
2단계: 변수 max와 min에 배열의 첫 번째 요소인 99를 대입합니다.
3단계: 인덱스 1부터 시작하는 for 반복문으로 나머지 요소들을 검사합니다.
4단계: 각 요소가 현재 max보다 크면 max를, min보다 작으면 min을 갱신합니다.
5단계: 반복이 끝나면 Console.Write()를 통해 최종 결과를 콘솔에 출력합니다.
4. 참고: LINQ를 활용한 더 간결한 방법
C#에서는 LINQ를 사용하면 한 줄로도 최댓값과 최솟값을 구할 수 있습니다.
using System;
using System.Linq;
public class Demo {
public static void Main() {
int[] arr = {99, 95, 93, 89, 87};
Console.WriteLine("Maximum element = " + arr.Max());
Console.WriteLine("Minimum element = " + arr.Min());
}
}직접 알고리즘을 구현하는 방식은 로직 이해와 학습에 유리하고, LINQ 방식은 실무에서 코드를 간결하게 유지하는 데 효과적입니다. 상황에 맞게 두 방법을 활용해 보세요.