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

파이썬으로 리스트 요소를 오른쪽으로 회전하는 프로그램

리스트의 요소를 오른쪽으로 회전해야 하는 경우, 먼저 리스트를 순회하며 마지막 요소의 값을 임시 변수에 저장합니다. 그다음 요소들을 다시 순회하면서 각 요소를 한 칸씩 뒤로 밀어내고, 저장해 두었던 마지막 값을 첫 번째 자리에 넣으면 회전이 완성됩니다.

아래는 이 과정을 구현한 예제입니다.

예제

my_list = [31, 42, 13, 34, 85, 0, 99, 1, 3]
n = 3
print("n의 초기값은 다음과 같습니다")
print(n)
print("현재 리스트 :")
print(my_list)

print("리스트를 3개 요소만큼 오른쪽으로 회전합니다...")
for i in range(0, n):
    last_elem = my_list[len(my_list)-1]

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

    my_list[0] = last_elem

print()

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

출력 결과

n의 초기값은 다음과 같습니다
3
현재 리스트 :
[31, 42, 13, 34, 85, 0, 99, 1, 3]
리스트를 3개 요소만큼 오른쪽으로 회전합니다...
오른쪽 회전 후 리스트 : 
99
1
3
31
42
13
34
85
0

동작 원리

  • 리스트를 정의하고 콘솔에 출력합니다.

  • 회전 횟수 n을 정의하고 콘솔에 출력합니다.

  • n번 반복하면서 매 회전마다 리스트의 마지막 요소 값을 임시 변수에 저장합니다.

  • 리스트를 뒤에서 앞으로(step을 -1로 지정) 순회하며 각 요소를 한 칸씩 뒤로 이동시킵니다.

  • 저장해 둔 마지막 요소를 리스트의 첫 번째 위치에 할당합니다.

  • 이 과정을 3번 반복하면 리스트가 세 칸 오른쪽으로 회전됩니다.

  • 최종 결과를 콘솔에 출력합니다.

참고: 슬라이싱으로 더 간단하게 구현하기

파이썬에서는 슬라이싱(slicing)을 활용하면 위 로직을 한 줄로 처리할 수 있습니다. 음수 인덱스를 이용해 뒤에서 n개의 요소를 잘라낸 뒤 나머지 앞부분과 연결하면 동일한 결과를 얻을 수 있습니다.

my_list = [31, 42, 13, 34, 85, 0, 99, 1, 3]
n = 3
my_list = my_list[-n:] + my_list[:-n]
print(my_list)

이 코드를 실행하면 [99, 1, 3, 31, 42, 13, 34, 85, 0]이 출력되며, 반복문 방식과 동일한 결과임을 확인할 수 있습니다. 상황에 따라 가독성과 성능을 고려해 적절한 방법을 선택하면 됩니다.