[Algorithm] 최대값 찾기

최대값 찾기

조금은 평소에는 아무렇지 않게 했던 것들을 보다 알고리즘 적으로 접근해보고자 한다.
Array에서 최대값을 찾거나 Object에서 최대값을 찾아야 할 때 보통은 다음과 같이 했을 것이다.

// Object는 배열로 변환
const testObj = {
  "a": 13,
  "b": 24,
  "c": 54,
  "d": 1.23,
  "e": 7
}

// 배열이면 바로 Math.max || Math.min 메소드를 이용해서 찾는다.
const maxValue = Math.max.apply(null, Object.values(testObj))
const minValue = Math.min.apply(null, Object.values(testObj))

// 호출
console.log(`최대값은 ${maxValue} 최소값은 ${minValue}`)

적어도 필자는 실무에서 이렇게 쓰다보니 어느날 문득, 최대값을 저런 것 없이
function으로 직접 구현하면 어떤 방법이 제일 효율적일까 생각을 해보게 되었다.

const testArr = [13,24,54,1.23,7,192,19292];

function findMax(arr) {
   let index = 0;
   let maxNum = arr[0];

    // 배열안에 모든요소를 비교할때까지
   while(arr.length !== index) {
     // 잠정적 최대값은 배열의 0번째 인덱스 값으로 비교
     if (maxNum < arr[index]) {
       // 잠정적 최대값보다 크면 잠정적 최대값으로 반영
       maxNum = arr[index]
     }
     // 무한루프 방지 및 next()
     index++;
   }

    // 최대값 return
   return `최대값은 ${maxNum}`
}

findMax(testArr)

보다 효율적인 방법이 있으면 추후에 업데이트할 예정이다.