리스트의 요소를 오른쪽으로 회전해야 하는 경우, 먼저 리스트를 순회하며 마지막 요소의 값을 임시 변수에 저장합니다. 그다음 요소들을 다시 순회하면서 각 요소를 한 칸씩 뒤로 밀어내고, 저장해 두었던 마지막 값을 첫 번째 자리에 넣으면 회전이 완성됩니다.
아래는 이 과정을 구현한 예제입니다.
예제
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]이 출력되며, 반복문 방식과 동일한 결과임을 확인할 수 있습니다. 상황에 따라 가독성과 성능을 고려해 적절한 방법을 선택하면 됩니다.