[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)
보다 효율적인 방법이 있으면 추후에 업데이트할 예정이다.