이 글은 Do it! 자료구조와 함께 배우는 알고리즘 입문 책에 대한 풀이이다.

연습문제

1. 네 값의 최댓값을 구하는 max4 메서드

static int max4(int a, int b, int c, int d) {
	int max;
	
	max = a;
	
	if (b > max) max = b;
	if (c > max) max = c;
	if (d > max) max = d;
	
	return max;
}

2. 세 값의 최솟값을 구하는 min3 메서드

static int min3(int a, int b, int c) {
	int min;
	
	min = a;
	
	if (b < min) min = b;
	if (c < min) min = c;
	
	return min;
}

3. 네 값의 최솟값을 구하는 min4 메서드

static int min4(int a, int b, int c, int d) {
	int min;
	
	min = a;
	
	if (b < min) min = b;
	if (c < min) min = c;
	if (d < min) min = d;
	
	return min;
}

4. 세 값의 대소 관계 모든 조합에 대해 중앙값 구하는 메서드

static int med3(int a, int b, int c) {
	int med = 0;
	
	if (a >= b)
		if (b >= c) med = b;
		else if (a >= c) med = c;
		else med = a;
	else if (a >= c) med = a;
	else if (b >= c) med = c;
	else med = b;
	
	return med;
}

5. 아래 중앙값을 구하는 메서드가 효율이 떨어지는 이유는?

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, c<=a 등)를 아래 else if 문에서 또 비교하고 있으므로 이미 나온 결론을 또 연산하고 있다. 따라서 효율이 떨어진다.