개요
정렬되지 않은 배열이 주어졌을 때, 해당 배열의 평균(mean)과 중앙값(median)을 계산하는 것이 이번 글의 목표입니다. 평균은 데이터의 전체적인 수준을 나타내는 대표값이며, 중앙값은 데이터를 크기 순으로 나열했을 때 가운데 위치하는 값입니다. 각각의 개념과 계산 방법, 그리고 C++ 구현 예제를 순서대로 살펴보겠습니다.
평균(Mean) 계산 방법
평균은 배열에 담긴 모든 값들을 더한 뒤, 요소의 총 개수로 나누어 구합니다. 다음 공식을 사용하면 됩니다.
평균 = (배열 요소들의 합) / (요소의 총 개수)
중앙값(Median) 계산 방법
배열이 이미 정렬되어 있다면, 중앙값은 다음과 같이 결정됩니다.
- 요소 개수가 홀수인 경우: 정렬된 배열의 가운데 요소가 중앙값입니다.
- 요소 개수가 짝수인 경우: 가운데 두 요소의 평균이 중앙값입니다.
만약 배열이 정렬되어 있지 않다면, 반드시 먼저 정렬을 수행한 후 위의 로직을 적용해야 합니다.
n이 홀수인 경우
1, 2, 3, 4, 5
중앙값 = 3
n이 짝수인 경우
1, 2, 4, 5
중앙값 = (2 + 4) / 2 = 3
입력 및 출력 예시
입력 1
arr[] = {3,5,2,1,7,8}출력 1
Mean is : 4.33333
Median is : 4
입력 2
arr[] = {1, 3, 4, 2, 6, 5, 8, 7}출력 2
Mean is: 4.5
Median is: 4.5
알고리즘
시작
Step 1→ 평균을 계산하는 함수 선언
double mean(int arr[], int size)
int sum = 0 선언
반복문 For int i = 0, i < size, i++
sum += arr[i]
종료
return (double)sum/(double)size
Step 2→ 중앙값을 계산하는 함수 선언
double median(int arr[], int size)
sort(arr, arr+size) 호출하여 배열 정렬
IF (size % 2 != 0)
return (double)arr[size/2]
종료
return (double)(arr[(size-1)/2] + arr[size/2])/2.0
Step 3→ main() 함수에서
int arr[] = {3,5,2,1,7,8} 선언
int size = sizeof(arr)/sizeof(arr[0]) 선언
mean(arr, size) 호출
median(arr, size) 호출
종료
C++ 구현 예제
#include <bits/stdc++.h>
using namespace std;
// 평균 계산
double mean(int arr[], int size){
int sum = 0;
for (int i = 0; i < size; i++)
sum += arr[i];
return (double)sum/(double)size;
}
// 중앙값 계산
double median(int arr[], int size){
sort(arr, arr+size);
if (size % 2 != 0)
return (double)arr[size/2];
return (double)(arr[(size-1)/2] + arr[size/2])/2.0;
}
int main(){
int arr[] = {3,5,2,1,7,8};
int size = sizeof(arr)/sizeof(arr[0]);
cout << "Mean is : " << mean(arr, size)<<endl;
cout << "Median is : " << median(arr, size) << endl;
return 0;
}
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Mean is : 4.33333
Median is : 4
마무리
정렬되지 않은 배열에서 평균은 단순히 요소들의 합을 개수로 나누면 되지만, 중앙값은 반드시 배열을 먼저 정렬한 뒤 요소 개수의 홀짝 여부에 따라 계산 방식을 달리해야 한다는 점이 핵심입니다. 위 예제처럼 sort() 함수를 활용하면 간단하게 구현할 수 있으며, 시간 복잡도는 정렬에 사용되는 O(n log n)이 지배적입니다.