Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 배열 요소를 왼쪽으로 회전시키는 방법

배열(리스트)의 요소를 왼쪽으로 회전시켜야 하는 경우가 종종 있습니다. 이를 구현하려면 배열을 반복 순회하면서, 지정된 회전 횟수만큼 각 요소의 인덱스를 한 칸씩 앞으로 이동시키면 됩니다.

왼쪽 회전이란 리스트의 첫 번째 요소가 마지막 위치로 이동하고, 나머지 요소들이 한 칸씩 앞당겨지는 연산입니다. 예를 들어 [11, 12, 23]을 1회 왼쪽 회전하면 [12, 23, 11]이 됩니다.

예제 코드

my_list = [11, 12, 23, 34, 65]
n = 3

print("원본 리스트 : ")
for i in range(0, len(my_list)):
    print(my_list[i])

for i in range(0, n):
    first_elem = my_list[0]

    for j in range(0, len(my_list)-1):
        my_list[j] = my_list[j+1]

    my_list[len(my_list)-1] = first_elem

print()

print("왼쪽 회전 후 리스트 : ")
for i in range(0, len(my_list)):
    print(my_list[i])

실행 결과

원본 리스트 :
11
12
23
34
65

왼쪽 회전 후 리스트 :
34
65
11
12
23

코드 설명

  • 먼저 리스트를 정의하고, 콘솔에 출력하여 원본 상태를 확인합니다.

  • 왼쪽으로 회전시킬 횟수(n)를 정의합니다. 위 예제에서는 3회 회전합니다.

  • 외부 반복문이 회전 횟수만큼 실행되고, 내부 반복문은 리스트 전체를 순회하며 각 요소를 바로 앞 인덱스로 이동시킵니다. 즉, 현재 인덱스의 값에 다음 인덱스의 값을 할당합니다.

  • 내부 반복문이 끝나면 첫 번째 요소(인덱스 0)를 미리 저장해 둔 값을 마지막 인덱스에 할당합니다. 이렇게 하면 한 번의 왼쪽 회전이 완성됩니다.

  • 위 과정을 n번 반복한 뒤, 최종 결과를 콘솔에 출력합니다.

더 간단한 방법: 슬라이싱 활용

파이썬에서는 슬라이싱(slicing)을 사용하면 훨씬 간결하게 왼쪽 회전을 구현할 수 있습니다.

def left_rotate(arr, n):
    n = n % len(arr)  # 회전 횟수가 리스트 길이보다 클 경우 처리
    return arr[n:] + arr[:n]

my_list = [11, 12, 23, 34, 65]
print(left_rotate(my_list, 3))
# 출력: [34, 65, 11, 12, 23]

이 방법은 arr[n:](n번째부터 끝까지)와 arr[:n](처음부터 n번째 전까지)를 연결하여 새로운 리스트를 생성합니다. 또한 나머지 연산자(%)를 사용해 회전 횟수가 리스트 길이보다 커도 올바르게 동작하도록 처리했습니다.

반복문 방식은 알고리즘 학습에 유용하고, 슬라이싱 방식은 실무에서 코드를 더 짧고 가독성 있게 작성할 때 적합합니다. 상황에 맞게 선택하여 사용하시기 바랍니다.