Rotate Array
Rotate Array - Explanation
Problem Summary
Write a function that rotates an array to the right by k steps.
Go to Problem →Detailed Explanation
이 문제는 **배열 회전** 알고리즘과 **음수 인덱스**를 활용한 slice 사용법을 학습합니다. **오른쪽 회전이란?** 배열의 마지막 k개 요소를 앞으로 이동시킵니다: [1, 2, 3, 4, 5]를 2칸 오른쪽 회전 → [4, 5, 1, 2, 3] **slice의 음수 인덱스** - `arr.slice(-k)`: 마지막 k개 요소 - `arr.slice(0, -k)`: 처음부터 마지막 k개 전까지 **[1, 2, 3, 4, 5], k=2 처리** - arr.slice(-2) → [4, 5] - arr.slice(0, -2) → [1, 2, 3] - 합치기: [4, 5, 1, 2, 3] **k % n의 중요성** k가 배열 길이보다 클 수 있습니다. n번 회전하면 원래대로 돌아오므로: - k=7, n=5 → 7 % 5 = 2 (실제 회전 횟수) - k=4, n=2 → 4 % 2 = 0 (원래 상태 유지) **k가 0인 경우** slice(-0)은 빈 배열이 아니라 전체 배열을 반환합니다. 특수 처리가 필요할 수 있습니다. **in-place 회전 (대안)** 공간을 절약하려면 세 번의 reverse로 구현할 수 있습니다: 1. 전체 뒤집기: [5,4,3,2,1] 2. 앞 k개 뒤집기: [4,5,3,2,1] 3. 나머지 뒤집기: [4,5,1,2,3]
Solution Code
function rotate(arr, k) {
const n = arr.length;
k = k % n;
return [...arr.slice(-k), ...arr.slice(0, -k)];
}Key Concepts from This Problem
Common Mistakes
Hints
Complexity Analysis
Time Complexity
O(n)
Grows linearly with input size
Space Complexity
O(n)
Uses memory proportional to input size