📚
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
#배열 #반복문 #알고리즘