백준의 2587번 문제 대표값2이다.
https://www.acmicpc.net/problem/2587
2587번: 대표값2
어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 +
www.acmicpc.net
< 문제 >
어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + 30) / 5 = 170 / 5 = 34가 된다.
평균 이외의 또 다른 대표값으로 중앙값이라는 것이 있다. 중앙값은 주어진 수를 크기 순서대로 늘어 놓았을 때 가장 중앙에 놓인 값이다. 예를 들어 10, 40, 30, 60, 30의 경우, 크기 순서대로 늘어 놓으면
10 30 30 40 60
이 되고 따라서 중앙값은 30이 된다.
다섯 개의 자연수가 주어질 때 이들의 평균과 중앙값을 구하는 프로그램을 작성하시오.
< 예제 >
평균과 중앙값을 구하는 간단한 정렬 문제이다.
이전의 2750 수 정렬하기 문제와 거의 유사하다.
[C++] 백준 2750
백준의 2750번 문제 수 정렬하기 이다. https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값
loasd.tistory.com
입력된 값의 개수가 5로 고정되어있어 중앙값은 구하기 쉽다.
#include <iostream>
#include <algorithm>
using namespace std;
#define size 5
int main() {
int num[5];
int max = 0;
for (int i = 0; i < 5; i++) {
cin >> num[i];
}
sort(num, num + 5);
int sum = 0;
for (int i = 0; i < size; i++) {
sum += num[i];
}
cout << sum / size << endl << num[2];
}
include < algorithm>을 해준 후 num배열을 sort()로 정렬해준다.
그 후 배열의 총합을 구하고 size(5)로 나눠주면 평균을 구할 수 있다.
배열에 들어갈 값의 갯수가 5로 고정되어 있기 때문에 중앙값은 당연히 num[2]가 된다.
정말 간단한 정렬문제이다.
#include <iostream>
using namespace std;
#define size 5
int main() {
int num[5];
int max = 0;
for (int i = 0; i < 5; i++) {
cin >> num[i];
}
int temp;
for (int i = 0; i < size; i++) {
for (int j = 1; j < size; j++) {
if (num[j] < num[j - 1]) {
temp = num[j];
num[j] = num[j - 1];
num[j - 1] = temp;
}
}
}
int sum = 0;
for (int i = 0; i < size; i++) {
sum += num[i];
}
cout << sum / size << endl << num[2];
}
이런식으로 sort()를 사용하지 않고 직접 작성한 정렬방법을 통해서도 문제를 해결할 수 있다.
'백준 > 단계별' 카테고리의 다른 글
[C++] 백준 2751 (0) | 2022.12.30 |
---|---|
[C++] 백준 25305 (0) | 2022.12.30 |
[C++] 백준 2750 (0) | 2022.12.30 |
[C++] 백준 2563 (0) | 2022.12.29 |
[C++] 백준 2566 (0) | 2022.12.29 |