📚

Find Maximum

Find Maximum - Explanation

쉬움 배열 O(n) O(n)

Problem Summary

Write a function that returns the largest number in an array.

Go to Problem →

Detailed Explanation

이 문제는 **Math.max()** 함수와 **스프레드 연산자(...)**의 조합을 학습합니다. **Math.max() 함수** Math.max()는 전달된 인수 중 가장 큰 값을 반환합니다. 하지만 배열을 직접 받지는 않습니다: - `Math.max(1, 5, 3)` → 5 (정상 동작) - `Math.max([1, 5, 3])` → NaN (배열은 직접 처리 불가) **스프레드 연산자 (...)** 스프레드 연산자는 배열을 개별 요소로 "펼쳐줍니다": - `...[1, 5, 3]`은 `1, 5, 3`과 같습니다 - `Math.max(...[1, 5, 3])`은 `Math.max(1, 5, 3)`과 동일합니다 **음수 배열 처리** 음수만 있는 배열에서도 올바르게 동작합니다. [-1, -5, -3]에서 -1이 가장 큽니다. **대안적 구현** reduce를 사용한 구현: `arr.reduce((max, cur) => cur > max ? cur : max, arr[0])` 이 방법은 스프레드 연산자보다 메모리 효율적입니다.

Solution Code

solution.js
function findMax(arr) {
  return Math.max(...arr);
}

Key Concepts from This Problem

1. Math.max() 함수
2. 스프레드 연산자 (...)
3. 배열 펼치기
4. 최댓값 알고리즘

Common Mistakes

Math.max(arr)처럼 배열을 직접 전달하면 NaN이 반환됩니다
빈 배열에 Math.max(...[])를 사용하면 -Infinity가 반환됩니다
매우 큰 배열에서 스프레드 연산자는 스택 오버플로우를 일으킬 수 있습니다

Hints

Hint 1: Math.max()를 사용할 수 있습니다.
Hint 2: 스프레드 연산자(...)를 활용해보세요.
Hint 3: 또는 reduce로 직접 구현할 수도 있습니다.

Complexity Analysis

Time Complexity

O(n)

Grows linearly with input size

Space Complexity

O(n)

Uses memory proportional to input size

Related Tags

#배열 #Math #스프레드