정수 세 개를 입력 받은 뒤, 세 수 중에서 중앙값을 출력하시오.

- 같은 수는 입력되지 않는다고 가정한다.

 

실행 예시 1
실행 예시 2


#pragma warning(disable:4996)

#include <stdio.h>

int main() { //main함수 선언
	int num1, num2, num3; //정수 3개 입력받을 변수 선언
	int middle; //중앙 값 대입될 변수 선언
	int temp = 0; //잠시 쓰일 임시 변수 선언

	scanf("%d %d %d", &num1, &num2, &num3); //정수 3개 입력 받음.

	((num1 > num2) && (num1 < num3)) || ((num1 > num3) && (num1 < num2)) ? middle = num1 : temp++; // [num2 < num1 < num3 일 때] or [num3 < num1 < num2 일 때] 중앙값은 num1. temp는 필요없는 값. 문법상 단순 자리 채우는 용.

	((num2 > num3) && (num2 < num1)) || ((num2 > num1) && (num2 < num3)) ? middle = num2 : temp++; // [num3 < num2 < num1 일 때] or [num1 < num2 < num3 일 때] 중앙값은 num2. temp는 필요없는 값. 문법상 단순 자리 채우는 용.

	((num3 > num1) && (num3 < num2)) || ((num3 > num2) && (num3 < num1)) ? middle = num3 : temp++; // [num1 < num3 < num2 일 때] or [num2 < num3 < num1 일 때] 중앙값은 num3. temp는 필요없는 값. 문법상 단순 자리 채우는 용.

	printf("%d\n", middle); //중앙 값 출력함.

	//사실 다른 방법도 있음. 최대값과 최소값을 구해서 제외시켜주면 중앙값 구할 수 있음.
	//int max, min; //최대, 최소
	//max = num1 > num2 ? num1 : num2; // 임시 최대
	//max = max > num3 ? max : num3; //최종 최대값 구함

	//min = num1 < num2 ? num1 : num2; // 임시 최소
	//min = min < num3 ? min : num3; //최종 최소값 구함

	//middle = num1 + num2 + num3 - max - min; // 중앙값은 총합 - 최대값 - 최소값 임.

	//printf("%d\n", middle);

	return 0; //0 반환
}
반응형