안녕하세요! 오늘은 C#으로 코딩테스트를 준비하는 분들을 위해 평균 구하기에 대한 알고리즘 문제를 다룰 것입니다. 많은 기업들이 개발자 채용 시 알고리즘 문제를 활용하므로, 이를 잘 준비하는 것이 중요합니다. 이번 강좌에서는 문제를 정의하고, 알고리즘을 설계하고, C#으로 코드를 구현한 후, 성능 분석까지 진행하겠습니다.
문제 정의
주어진 정수 배열의 평균을 계산하는 문제입니다. 배열은 다양한 양의 정수로 구성되어 있으며, 최종 결과는 소수점 이하 두 자리까지 표현해야 합니다. 평균을 구하는 방식은 아래와 같습니다:
주어진 배열의 모든 원소를 더한 후, 원소의 개수로 나누어 평균을 구합니다.
입력 형식
- 길이 N (1 ≤ N ≤ 1000)
- 정수 배열 A = [a1, a2, …, aN] (1 ≤ ai ≤ 10,000)
출력 형식
- 평균 값 (소수점 이하 두 자리까지)
문제 예시
예제 1
입력: 5, 식 배열 [10, 20, 30, 40, 50]
출력: 30.00
예제 2
입력: 3, 배열 [5, 15, 25]
출력: 15.00
알고리즘 설계
이 문제를 해결하기 위한 알고리즘은 매우 간단합니다. 우선 주어진 배열의 모든 요소를 더한 후, 배열의 개수로 나누어 평균을 계산하는 방식입니다. 이때 소수점 아래 두 자리를 유지하기 위해 Math.Round 메소드를 사용할 것입니다.
알고리즘 단계:
- 정수 배열을 받는다.
- 배열의 총합을 계산한다.
- 배열의 개수(N)로 총합을 나누어 평균을 구한다.
- 평균을 소수점 두 자리로 반올림하여 반환한다.
C# 코드 구현
이제 위의 알고리즘을 바탕으로 C# 코드를 구현해 보겠습니다.
using System;
class AverageCalculator
{
public static void Main(string[] args)
{
// 입력 받기
Console.Write("정수의 개수를 입력하세요: ");
int N = int.Parse(Console.ReadLine());
int[] numbers = new int[N];
Console.WriteLine("정수 배열을 입력하세요:");
for (int i = 0; i < N; i++)
{
numbers[i] = int.Parse(Console.ReadLine());
}
double average = CalculateAverage(numbers);
Console.WriteLine($"평균: {average:F2}"); // 소수점 2자리까지 출력
}
private static double CalculateAverage(int[] array)
{
double sum = 0;
foreach (int number in array)
{
sum += number; // 배열의 총합 계산
}
return Math.Round(sum / array.Length, 2); // 평균을 소수점 두 자리로 반올림
}
}
코드 설명
위의 C# 코드는 다음과 같은 구조를 가지고 있습니다:
- 사용자로부터 정수 개수와 배열 요소를 입력받습니다.
- CalculateAverage 메소드에서 평균을 계산합니다.
- 마지막으로, 평균을 소수점 두 자리로 출력합니다.
성능 분석
이 문제의 시간 복잡도는 O(N)입니다. 배열의 모든 원소를 한 번씩만 방문하고 있기 때문입니다. 공간 복잡도는 O(1)로 추가적인 저장 공간을 거의 사용하지 않습니다. 따라서 이 알고리즘은 입력 데이터의 크기가 커져도 여전히 효과적으로 작동합니다.
결론
이번 강좌를 통해 C#을 사용하여 평균 구하기 문제를 해결하는 방법을 알아보았습니다. 코딩테스트에서 자주 등장하는 문제이므로 충분히 연습하고 다양한 입력에 대해 올바르게 동작하는지 확인하는 것이 중요합니다. 앞으로도 더 많은 알고리즘 문제를 풀어보시기 바랍니다!