배열 회전

less than 1 minute read

배열 왼쪽 회전 시각화

예시: [1,2,3,4,5]를 왼쪽으로 2칸 회전

초기 상태

[1, 2, 3, 4, 5]

Step 1: reverse(arr, 0, 1) - 처음 k개 뒤집기

[1, 2, 3, 4, 5]
 ↓  ↓
[2, 1, 3, 4, 5]

Step 2: reverse(arr, 2, 4) - 나머지 뒤집기

[2, 1, 3, 4, 5]
       ↓  ↓  ↓
[2, 1, 5, 4, 3]

Step 3: reverse(arr, 0, 4) - 전체 뒤집기

[2, 1, 5, 4, 3]
 ↓  ↓  ↓  ↓  ↓
[3, 4, 5, 1, 2]  ✅ 완료!

왜 이렇게 동작하나?

패턴 발견

원본: [1, 2 | 3, 4, 5]
목표: [3, 4, 5 | 1, 2]

1. 앞부분 뒤집기:  [2, 1 | 3, 4, 5]
2. 뒷부분 뒤집기:  [2, 1 | 5, 4, 3]
3. 전체 뒤집기:    [3, 4, 5 | 1, 2]

핵심 아이디어

두 그룹을 뒤집은 후 → 전체를 뒤집으면 → 그룹 순서가 바뀜!


다른 예시: k=3

[1, 2, 3, 4, 5, 6, 7]

Step 1: [3, 2, 1 | 4, 5, 6, 7]
Step 2: [3, 2, 1 | 7, 6, 5, 4]
Step 3: [4, 5, 6, 7 | 1, 2, 3]  ✅

시간복잡도: O(n)
공간복잡도: O(1)

Updated: