※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 9782번 문제인 Median이다.
문제는 아래 링크를 확인하자.

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

 

9782번: Median

ค่ามัธยฐาน หรือ Median คือค่ากึ่งกลางของกลุ่มข้อมูลที่เรียงลําดับ นั่นคือจํานวนข้อมูลที่น้อย

www.acmicpc.net

주어진 길이 N의 정렬된 정수열의 중앙값(median)을 구하는 문제이다. 중앙값은 N이 홀수이면 정가운데의 원소이고 짝수이면 정가운데의 두 원소의 평균으로 계산한다.

 

주어지는 배열이 미리 정렬된 상태로 주어지므로 적절히 인덱스를 찾아 문제를 해결하자. 실수오차를 피하고싶다면 문제의 답을 10배한 값을 계산한 뒤 10으로 나눈 몫과 나머지를 이용할 수도 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N;
int arr[100];
int T;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N;
	while (N) {
		for (int i = 0; i < N; i++) cin >> arr[i];
		T++;
		cout << "Case " << T << ": ";
		int ans;
		if (N & 1) ans = arr[N / 2] * 10;
		else ans = (arr[N / 2 - 1] + arr[N / 2]) * 5;
		cout << ans / 10 << '.' << ans % 10 << '\n';

		cin >> N;
	}
}
728x90

+ Recent posts