그룹별 배열 뒤집기

발행: (2026년 3월 1일 오후 03:08 GMT+9)
2 분 소요
원문: Dev.to

Source: Dev.to

문제 설명

주어진 크기 k 로 배열을 그룹으로 나누어 역순으로 바꾸세요.
배열은 길이 k 인 연속적인 청크(윈도우) 로 나뉘며, 각 청크는 독립적으로 역순이 됩니다. 마지막 청크는 k 개보다 적을 수 있으며, 이 역시 역순으로 바꿔야 합니다.

접근 방법

  1. 배열을 k 간격으로 순회합니다(인덱스 0, k, 2k, …).
  2. 각 시작 인덱스 i 에 대해 부분 배열 arr[i : i+k] 를 역순으로 바꿉니다.
  3. 배열 끝에 도달할 때까지 반복합니다.

슬라이스 연산은 남은 요소가 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]

0 조회
Back to Blog

관련 글

더 보기 »

구리지 않은 시맨틱 무효화

캐싱 문제 웹 애플리케이션을 어느 정도 기간 동안 작업해 본 사람이라면 캐싱에 대한 상황을 잘 알 것입니다. 캐시를 추가하면 모든 것이 빨라지고, 그 다음에 누군가…