세 값의 중앙값

황희윤·2023년 9월 12일

세 정수의 중앙값 구하기

class Median{
	static int med3(int a, int b, int c){
    	if(a >= b){
        	if(b >= c){
            	return b;
            } else if(c >= a){
            	return a;
            } else {
            	return c;
            }
        } else if(a > c) {
        	return a;
        } else if(b > c) {
        	return c;
        } else
        	return b;
    }
    
    public static void main(String[] args) {
		System.out.println("med3(3,2,1) = " + med3(3,2,1));      // a>b>c
		System.out.println("med3(3,2,2) = " + med3(3,2,2));      // a>b=c
		System.out.println("med3(3,1,2) = " + med3(3,1,2));      // a>c>b
		System.out.println("med3(3,2,3) = " + med3(3,2,3));      // a=c>b
		System.out.println("med3(2,1,3) = " + med3(2,1,3));      // c>a>b
		System.out.println("med3(3,3,2) = " + med3(3,3,2));      // a=b>c
		System.out.println("med3(3,3,3) = " + med3(3,3,3));      // a=b=c
		System.out.println("med3(2,2,3) = " + med3(2,2,3));      // c>a=b
		System.out.println("med3(2,3,1) = " + med3(2,3,1));      // b>a>c
		System.out.println("med3(2,3,2) = " + med3(2,3,2));      // b>a=c
		System.out.println("med3(1,3,2) = " + med3(1,3,2));      // b>c>a
		System.out.println("med3(2,3,3) = " + med3(2,3,3));      // b=c>a
		System.out.println("med3(1,2,3) = " + med3(1,2,3));      // c>b>a
	}
}

Q. 아래의 코드가 위의 코드보다 비효율적인 이유는?

static int med3(int a, int b, int c) {
		if ((b >= a && c <= a) || (b <= a && c >= a))
			return a;
		else if ((a > b && c < b) || (a < b && c > b))
			return b;
		return c;
	}

아래 코드의 첫번째 if문( b >= a 와 b <= a )과 두번째 if( a > b와 b > a )

첫번째 if문이 성립한 경우 두번째의 if문에서도 (실질적으로)같은 판단을 수행하므로 효율이 나빠진다.

profile
HeeYun's programming study

0개의 댓글