C# 코딩테스트 강좌, 평균 구하기

안녕하세요! 오늘은 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 메소드를 사용할 것입니다.

알고리즘 단계:

  1. 정수 배열을 받는다.
  2. 배열의 총합을 계산한다.
  3. 배열의 개수(N)로 총합을 나누어 평균을 구한다.
  4. 평균을 소수점 두 자리로 반올림하여 반환한다.

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# 코드는 다음과 같은 구조를 가지고 있습니다:

  1. 사용자로부터 정수 개수와 배열 요소를 입력받습니다.
  2. CalculateAverage 메소드에서 평균을 계산합니다.
  3. 마지막으로, 평균을 소수점 두 자리로 출력합니다.

성능 분석

이 문제의 시간 복잡도는 O(N)입니다. 배열의 모든 원소를 한 번씩만 방문하고 있기 때문입니다. 공간 복잡도는 O(1)로 추가적인 저장 공간을 거의 사용하지 않습니다. 따라서 이 알고리즘은 입력 데이터의 크기가 커져도 여전히 효과적으로 작동합니다.

결론

이번 강좌를 통해 C#을 사용하여 평균 구하기 문제를 해결하는 방법을 알아보았습니다. 코딩테스트에서 자주 등장하는 문제이므로 충분히 연습하고 다양한 입력에 대해 올바르게 동작하는지 확인하는 것이 중요합니다. 앞으로도 더 많은 알고리즘 문제를 풀어보시기 바랍니다!