1. [ Algorithm ( 알고리즘 ) 이란 ? ]
문제를 해결하기 위한 것으로 , 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합
2. [ Max 값 and Min값 구하기 ]
package com.aiden.algorithm.findMaxValue.practice;
public class practice1 {
public static void main(String[] args) {
System.out.println("max4 메서드의 최대값은 : " + max4(1, 10, 20, 111));
System.out.println("min3 메서드의 최소값은 : " + min3(7, 20, 11));
System.out.println("min4 매서드의 최소값은 : " + min4(9, 11, 2, 999));
}
// 1. 최대값을 구하는 메서드
static int max4(int a, int b , int c, int d) {
int max = a;
if(b > max) max = b;
if(c > max) max = c;
if(d > max) max = d;
return max ;
}
// 2. 최소값을 구하는 메서드
static int min3(int a, int b, int c) {
// 기본 설정으로 최소값을 a라고 설정해줍니다.
int min = a;
// 만약 min > b 라면 최소값은 b
if(min > b) min = b;
// 만약 min > c 라면 최소값은 c
if(min > c) min = c;
return min;
}
//3. 네 값의 최소값을 구하는 메서드
static int min4( int a, int b , int c, int d) {
// 기본설정으로 최소값을 a라고 설정해준다.
int min = a;
if (min > b) min = b;
if (min > c) min = c;
if (min > d) min = d;
return min;
}
}
Java
복사
3. [ 중앙값 구하기 ]
package com.aiden.algorithm.findMedian.practice;
public class findMedianValue {
public static void main(String[] args) {
System.out.println("median(3,2,1) = " + median(3,2,1)); //[A] a > b > c
System.out.println("median(3,2,2) = " + median(3,2,2)); //[B] a > b = c
System.out.println("median(3,1,2) = " + median(3,1,2)); //[C] a > c > b
System.out.println("median(3,2,3) = " + median(3,2,3)); //[D] a = b > c
System.out.println("median(3,2,3) = " + median(2,1,3)); //[E] c > a > b
System.out.println("median(3,3,2) = " + median(3,3,2)); //[F] a = b > c
System.out.println("median(3,3,3) = " + median(3,3,3)); //[G] a = b = c
System.out.println("median(2,2,3) = " + median(2,2,3)); //[H] c > a = b
System.out.println("median(2,3,1) = " + median(2,3,1)); //[I] b > a > c
System.out.println("median(2,3,2) = " + median(2,3,2)); //[J] b > a = c
System.out.println("median(1,3,2) = " + median(1,3,2)); //[K] b > c > a
System.out.println("median(2,3,3) = " + median(2,3,3)); //[L] b = c > a
System.out.println("median(1,2,3) = " + median(1,2,3)); //[M] c > b > a
}
static int median(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;
}
}
Java
복사
4. [ 중앙값 효율 따지기 ]
중앙값을 구하는 메서드는 위에서 작성한것처럼 작성할 수 도 있지만 아래와 같이 작성할 수 도있습니다. 하지만 효율이 떨어지는데 그 이유는 무엇일까?
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;
}
Java
복사
가장 처음의 if문의 판단
if ((b >= a && c<= a) || (b <= a && c >= a)) 에 주목합니다. 여기서 b >= a 및 b <= a의 판단을 뒤집은 판단(실질적으로 같은 판단)을 이어지는 else 이후의
else if ((a > b && c < b) || (b <= a && c > b)) 으로 수행합니다. 결국 가장 처음의 if가 성립한 경우 2 번째의 if에서도 (실질적으로)같은 판단을 수행하므로 효율이 나빠집니다