최댓값(in 배열)

RingKim1·2024년 4월 24일

algorithm

목록 보기
2/18

처음 알고리즘을 접했다.
분명 머릿속으로는 풀 수 있는데 코드로 적는 과정이 익숙하지 않기도 하고
어떠한 것을 이용해서 효율적으로 코드를 풀어내야 할 지 낯설다..

많이 풀어봐야 겠다.

최댓값

아래 배열에서 가장 큰 값을 구해보자.

array = [3, 5, 6, 1, 2, 4]

1. Math 객체 이용

console.log(Math.max(3, 5, 6, 1, 2, 4)); // 6

Math객체를 활용해서 배열 내 값들은 적어주면 쉽게 구할 수 있다.

하지만, 배열의 길이가 무한정으로 길어지다 보면 쉽게 Math객체 안에 적어 줄 수 없을 경우
es6에서 배운 스프레드 연산자(spread operator)를 활용해서 배열을 적어준다.

console.log(Math.max(...array)); // 6

2. for문 활용

let maxNum = array[0] // 최댓값 선언, 초기설정

for (let i = 0; i < array.length; i++) { //
    if (maxNum < array[i]) { // 비교
        maxNum = array[i]; //  최댓값이 변경
    }
}

console.log(maxNum);

Trouble Shooting

❓Troubleshooting이란

문제가 발생한 원인을 규명하고 이를 복구할 때까지의 작업
1. 오류 코드
2. 오류 메시지
3. 원인 / 증상
4. 해결책

사실 스프레드 연산자를 쓰기 전 배열을 바꿔서 쓸 수 있는 게 없을까 고민을 하면서 처음에 막혔다.
이후에 생각해 냈던 것이 아래 2가지 방법

const str1 = array.join();
console.log(str1); // 3,5,6,1,2,4
const str2 = array.toString();
console.log(str2); // 3,5,6,1,2,4

그러나 Math객체 안에 들어갈 때 문자열이 들어갔기 때문인지 실패를 했다.

console.log(Math.max(str1)); // NaN
console.log(Math.max(str2)); // NaN

결국 구글링을 통해 💡스프레드 연산자를 발견!

console.log(...array); // 3 5 6 1 2 4
console.log(Math.max(...array)); // 6

❓스프레드 연산자

배열, 문자열, 객체 등 반복 가능한 객체 (Iterable Object)를 개별 요소로 분리(전개)할 수 있음

아래 방법도 가능..

max = Math.max.apply(null, array);
// apply를 쓰게 될 경우 즉시 실행
// apply(null this binding할 것, array형태)

console.log(max); // 6

참고자료
Troubleshooting
스프레드 연산자

profile
커피는 콜드브루

0개의 댓글