그룹별 배열 뒤집기
발행: (2026년 3월 1일 오후 03:08 GMT+9)
2 분 소요
원문: Dev.to
Source: Dev.to
문제 설명
주어진 크기 k 로 배열을 그룹으로 나누어 역순으로 바꾸세요.
배열은 길이 k 인 연속적인 청크(윈도우) 로 나뉘며, 각 청크는 독립적으로 역순이 됩니다. 마지막 청크는 k 개보다 적을 수 있으며, 이 역시 역순으로 바꿔야 합니다.
접근 방법
- 배열을
k간격으로 순회합니다(인덱스0, k, 2k, …). - 각 시작 인덱스
i에 대해 부분 배열arr[i : i+k]를 역순으로 바꿉니다. - 배열 끝에 도달할 때까지 반복합니다.
슬라이스 연산은 남은 요소가 k 개보다 적은 경우도 자동으로 처리합니다.
구현 (Python)
def reverse_in_groups(arr, k):
"""
Reverse the elements of `arr` in groups of size `k`.
Parameters
----------
arr : list
The list to be processed.
k : int
The size of each group.
Returns
-------
list
The list with each group reversed.
"""
n = len(arr)
for i in range(0, n, k):
# Reverse the sub-array from i to i+k
arr[i:i + k] = reversed(arr[i:i + k])
return arr
복잡도
- 시간:
O(n)– 각 요소는 최대 두 번 방문합니다(한 번은 순회 중, 한 번은 역순 처리 중). - 공간:
O(1)추가 공간(역순이 제자리에서 수행됩니다).
예시
arr = [1, 2, 4, 5, 7]
k = 3
- 청크 1:
[1, 2, 4] → [4, 2, 1] - 청크 2 (경계 경우):
[5, 7] → [7, 5]
결과: [4, 2, 1, 7, 5]