코틀린 코딩테스트 강좌, 평균 구하기

1. 문제 정의

주어진 N개의 정수에서 평균을 구하는 프로그램을 코틀린으로 작성하는 문제입니다. 입력으로 주어지는 정수의 개수는 1 이상 100,000 이하이며, 각 정수는 -50,000 이상 50,000 이하입니다.
이 알고리즘은 O(N)의 시간 복잡도를 가져야 하며, 수치의 합산과 평균 계산을 수행해야 합니다.

2. 문제 접근 및 해결 방안

평균을 구하기 위해서는 주어진 정수의 합을 구한 후, 그 합을 정수의 개수로 나누어야 합니다.
아래는 문제를 해결하기 위한 단계입니다.

  • 1단계: 배열 또는 리스트에 주어진 정수를 저장합니다.
  • 2단계: 배열의 모든 요소를 순회하며 합계를 구합니다.
  • 3단계: 구한 합계를 입력된 정수의 개수로 나누어 평균을 계산합니다.
  • 4단계: 평균값은 소수점 두 자리까지 출력합니다.

3. 시간 복잡도 분석

주어진 문제의 해결 방법은 리스트를 한 번 순회하여 합계를 구하는 방식입니다.
각 요소를 한 번씩만 방문하기 때문에 시간 복잡도는 O(N)으로, 매우 효율적입니다.
공간 복잡도 또한 O(1)로 추가적인 메모리 사용이 적습니다.

4. 코틀린 구현

아래는 문제에 대한 코틀린 코드 예제입니다. 이 코드는 위에서 설명한 단계에 따라 작성되었습니다.


fun main() {
    // 1. 입력 수의 개수를 읽어들입니다.
    val n = readLine()!!.toInt()
    // 2. 정수를 저장할 리스트를 선언합니다.
    val numbers = readLine()!!.split(" ").map { it.toInt() }

    // 3. 정수의 합을 구합니다.
    val sum = numbers.sum()

    // 4. 평균을 구합니다.
    val average = sum.toDouble() / n

    // 5. 평균을 소수점 둘째 자리까지 출력합니다.
    println(String.format("%.2f", average))
}
    

5. 입력 및 출력 예시

다음은 프로그램 실행과정의 입력 및 출력 예시입니다.


입력 예시:
5
10 20 30 40 50

출력 예시:
30.00
    

6. 예제 설명

위의 입력 예시를 살펴보면, 정수 10, 20, 30, 40, 50의 평균을 구하기 위한 입력입니다.
총 정수는 5개이며, 이들의 합은 150입니다. 따라서 평균은 150을 5로 나눈 값인 30.00이 됩니다.

7. 추가 고려 사항

평균을 구할 때 정수의 개수가 0일 경우는 현실적으로 있을 수 없지만,
코드를 작성할 때 예외 상황을 고려하여 추가적인 검증을 삽입하는 것이 좋습니다.
예를 들어, 입력 수가 0인 경우에는 “입력 수가 없습니다.”라는 메시지를 출력하도록 코드를 수정할 수 있습니다.
이는 프로그래밍에서 예외 처리의 중요성을 보여줍니다.

8. 요약

코틀린을 사용하여 N개의 정수에서 평균을 구하는 방법을 알아보았습니다.
문제를 해결하는 과정에서 입력 데이터를 처리하고, 합계를 계산하고, 평균을 출력하는 단계별 과정을 거쳤습니다.
또한, 시간 복잡도와 공간 복잡도를 분석하여 알고리즘의 효율성을 설명했습니다.
중간에 예외 처리를 추가하여 보다 안정적인 코드를 작성하는 방법도 소개했습니다.

9. 결론

알고리즘 문제를 해결할 때에는 항상 문제를 이해하고, 접근 방식을 설계한 후,
코드로 구현하는 분야에서 많은 연습이 필요합니다. 코틀린을 통해 이러한 문제 해결 능력을 길러
취업에 도움이 될 것입니다. 앞으로도 다양한 문제들을 다루며 실력을 쌓아 나가시길 바랍니다.