📚

Reverse Array

Reverse Array - Explanation

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

Problem Summary

Write a function that reverses an array without using the built-in reverse method.

Go to Problem →

Detailed Explanation

이 문제는 **역순 순회**와 **배열 조작**의 기본을 학습합니다. 내장 메서드 없이 직접 구현하면서 알고리즘적 사고를 기를 수 있습니다. **역순 순회 방법** 배열의 마지막 인덱스(`arr.length - 1`)부터 0까지 감소하며 순회합니다: `for (let i = arr.length - 1; i >= 0; i--)` **배열 [1, 2, 3]의 처리 과정** 1. i=2: result.push(arr[2]) → result = [3] 2. i=1: result.push(arr[1]) → result = [3, 2] 3. i=0: result.push(arr[0]) → result = [3, 2, 1] **원본 배열 보존** 새 배열 `result`를 만들어 작업하므로 원본 배열은 변경되지 않습니다. 이것은 **불변성(immutability)**을 지키는 좋은 습관입니다. **다른 구현 방법** - 투 포인터: 양쪽 끝에서 시작해 중앙으로 이동하며 교환 - unshift 사용: 앞에서부터 순회하며 새 배열 앞에 추가 - reduceRight 사용: 오른쪽부터 축소하며 배열 구성

Solution Code

solution.js
function reverseArray(arr) {
  const result = [];
  for (let i = arr.length - 1; i >= 0; i--) {
    result.push(arr[i]);
  }
  return result;
}

Key Concepts from This Problem

1. 역순 for 루프
2. push 메서드
3. 배열 인덱스
4. 불변성 원칙

Common Mistakes

i <= arr.length로 시작하면 undefined가 추가됩니다
i > 0 조건을 사용하면 첫 번째 요소(인덱스 0)를 놓칩니다
원본 배열을 직접 수정하면 예상치 못한 부작용이 발생할 수 있습니다

Hints

Hint 1: 뒤에서부터 순회해보세요.
Hint 2: 새 배열을 만들어 요소를 추가하세요.
Hint 3: arr.length - 1부터 0까지 반복합니다.

Complexity Analysis

Time Complexity

O(n)

Grows linearly with input size

Space Complexity

O(n)

Uses memory proportional to input size

Related Tags

#배열 #반복문 #알고리즘