티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 2587번 대표값2

https://www.acmicpc.net/problem/2587

 

2587번: 대표값2

어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 +

www.acmicpc.net

* 사용언어 : C언어, C++

 

1. 문제

다섯 개의 자연수를 입력받고, 평균과 중앙값을 출력

 

2. 풀이

다섯 개의 숫자를 크기가 5 인 int 배열에 저장하고

정렬한 뒤 가운데 숫자를 중앙값으로 출력하게 구현했습니다.

 

불필요한 for loop 를 만들지 않기 위해,

숫자를 입력받으면서 미리 sum 을 구한 뒤 5로 나누어 평균을 출력했습니다.

 

5개 짜리 배열이라 구동 시간이 큰 의미가 없기 때문에

비교적 단순한 선택 정렬을 구현하여 정렬했습니다.

 

3. 코드

#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
/*
2587_대표값2
1112KB	0ms
*/
#include <cstdio>

const int LM = 5;
int a[LM];

void sSort() {
	int min, idx, tmp;
	for (int i = 0; i < LM - 1; ++i) {
		min = a[i], idx = i;
		for (int j = i + 1; j < LM; ++j) {
			if (a[j] < min) {
				min = a[j];
				idx = j;
			}
		}
		if (idx != i) {
			tmp = a[i];
			a[i] = a[idx];
			a[idx] = tmp;
		}
	}
}

int main() {
#ifdef _WIN32
	freopen("input.txt", "r", stdin);
#endif // _WIN32
	int sum = 0;
	for (int i = 0; i < LM; ++i) {
		scanf("%d", &a[i]);
		sum += a[i];
	}
	sSort();

	printf("%d\n%d\n", sum / LM, a[2]);
	return 0;
}

 

728x90
반응형
댓글