파이썬에서 리스트를 뒤집는 가장 간결하고 우아한 방법 중 하나는 바로 슬라이싱(slicing)을 활용하는 것입니다. 이번 글에서는 n개의 요소를 가진 리스트 nums가 주어졌을 때, 슬라이싱 연산만으로 리스트를 역순으로 뒤집는 방법을 알아보겠습니다.
문제 정의
예를 들어 입력 리스트가 다음과 같다고 가정해 보겠습니다.
nums = [5, 7, 6, 4, 6, 9, 3, 6, 2]
이때 기대하는 출력 결과는 다음과 같습니다.
[2, 6, 3, 9, 6, 4, 6, 7, 5]
해결 접근 방식
리스트 슬라이싱은 콜론(:)으로 구분되는 최대 세 개의 매개변수를 받습니다.
- start(시작 인덱스): 슬라이싱을 시작할 위치
- end(종료 인덱스): 슬라이싱을 끝낼 위치
- step(증감 단계): 요소를 건너뛰는 간격
리스트 전체를 대상으로 하므로 시작 인덱스와 종료 인덱스는 생략할 수 있습니다. 핵심은 step 값을 -1로 지정하는 것입니다. step이 -1이면 인덱스가 하나씩 감소하며 뒤에서부터 앞으로 순회하게 되고, 결과적으로 리스트가 역순으로 정렬됩니다.
따라서 슬라이싱 문법은 [::-1] 형태가 됩니다.
구현 예제
다음 코드를 통해 실제 동작을 확인해 보겠습니다.
def solve(nums): return nums[::-1] nums = [5, 7, 6, 4, 6, 9, 3, 6, 2] print(solve(nums))
입력
[5, 7, 6, 4, 6, 9, 3, 6, 2]
출력
[2, 6, 3, 9, 6, 4, 6, 7, 5]
추가 팁: 다른 리스트 뒤집기 방법과의 비교
슬라이싱 외에도 파이썬에는 리스트를 뒤집는 여러 방법이 있습니다.
reversed(nums): 역순 이터레이터를 반환하며,list()로 감싸야 리스트가 됩니다.nums.reverse(): 원본 리스트 자체를 제자리에서 뒤집으며 새 리스트를 생성하지 않습니다.nums[::-1]: 원본은 그대로 유지한 채 뒤집힌 새로운 리스트를 반환합니다.
원본 데이터를 보존해야 한다면 슬라이싱 방식이 가장 안전하고 효율적인 선택입니다. 시간 복잡도는 O(n)으로, 리스트 길이에 비례하여 선형적으로 수행됩니다.