[백준][C++] 2587번 대표값2
대표값2
문제 링크
분석
입력으로 자연수 5개가 줄바꿈으로 하나씩 주어집니다.
해당 자연수들의 평균값과 중앙값을 구해 출력하는 문제입니다.
평균은 모든 수의 합을 수의 개수로 나눈것이며, 중앙값은 수를 크기 순서대로 늘어 놓았을 때 중간에 놓인 값을 의미합니다.
예를 들어 $10, 40, 30, 60, 30$의 경우 총 합은 $170$이고, 수의 개수는 $5$이기 때문에 평균은 $170 \div 5 = 34$가 됩니다.
중앙값은 수를 크기 순서대로 늘어 놓을 경우 $10, 30, 30, 40, 60$이므로 중앙에 있는 값은 $30$이 됩니다.
풀이
#include <iostream>
int main()
{
const int Count = 5;
int NumArr[Count] = {};
int TotalSum = 0;
// 입력을 받는 반복문
for (int i = 0; i < Count; ++i)
{
std::cin >> NumArr[i];
TotalSum += NumArr[i];
}
// 버블 정렬
for (int i = 0; i < Count - 1; ++i)
{
for (int j = 0; j < Count - 1; ++j)
{
if (NumArr[j] > NumArr[j + 1])
{
int temp = NumArr[j];
NumArr[j] = NumArr[j + 1];
NumArr[j + 1] = temp;
}
}
}
std::cout << TotalSum / Count << std::endl;
std::cout << NumArr[Count / 2] << std::endl;
return 0;
}
성능 요약
시간 복잡도는 상수 시간에 끝나기 때문에 $O(1)$입니다.
- 입력 받는 반복문 $O(5) \approx O(1)$
- 버블 정렬 $O(n^{2}) \approx O(5^{2}) \approx O(1)$
- 입력의 크기가 $5$로 고정돼있기 때문에 $O(1)$이 됩니다.
- $O(1) + O(1)$
공간 복잡도는 고정된 크기의 상수 공간을 사용하기 때문에 $O(1)$입니다.
메모리: 2020 KB
시간: 0 ms
댓글남기기