알고리즘이란?(개념 및 Max,Min,Median)

관련단어
Algorithm
Max
Min
Median
진행일시
2021/09/12
이메일
조사자

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에서도 (실질적으로)같은 판단을 수행하므로 효율이 나빠집니다