이 글에서는 사용자로부터 배열(리스트)과 뒤집고자 하는 위치 n을 입력받아, 해당 위치까지의 요소만 역순으로 뒤집는 파이썬 프로그램을 소개합니다. 핵심은 배열의 첫 번째 요소부터 (n-1)번째 요소까지만 뒤집고, 그 이후의 나머지 부분은 원래 순서를 그대로 유지하는 것입니다.
예제
입력 : A = [3, 7, 6, 4, 1, 2] n = 4 출력 : [1, 4, 6, 7, 3, 2]
위 예제에서 앞의 4개 요소 [3, 7, 6, 4]가 역순인 [4, 6, 7, 3]으로 뒤집히고, 나머지 [1, 2]는 그대로 유지되어 최종 결과가 만들어집니다.
알고리즘
1단계: n-1 위치부터 시작해 리스트의 첫 요소까지 역순으로 뒤집습니다.
2단계: n 위치 이후의 나머지 리스트를 분리합니다.
3단계: 두 부분을 연결(concat)하여 출력합니다.
핵심 아이디어: 슬라이싱(Slicing)
파이썬에서는 별도의 반복문 없이 슬라이싱만으로 이 문제를 간단하게 해결할 수 있습니다.
A[n-1::-1]: 인덱스 n-1부터 시작해 첫 번째 요소까지 거꾸로 잘라낸 부분 리스트입니다.A[n:]: 인덱스 n부터 끝까지, 즉 뒤집지 않고 유지해야 할 나머지 부분입니다.- 두 결과를
+연산자로 연결하면 원하는 최종 리스트가 완성됩니다.
예제 코드
# 배열을 n번째 위치까지 뒤집는 프로그램
def arrayreverse(A, n):
# n-1 위치 요소부터 첫 번째 요소까지 역순으로 생성한 뒤,
# n 위치 이후의 나머지 부분과 연결하여 출력
print("REVERSE OF AN ARRAY UPTO", n, "POSITION", A[n-1::-1] + A[n:])
# 드라이버 코드
if __name__ == "__main__":
A = list()
n1 = int(input("Enter the size of the List ::"))
print("Enter the Element of List ::")
for i in range(n1):
k = int(input())
A.append(k)
n = int(input("Enter the position to be reverse ::"))
arrayreverse(A, n)실행 결과
Enter the size of the List :: 6 Enter the Element of List :: 2 3 4 1 78 23 Enter the position to be reverse : 5 REVERSE OF AN ARRAY UPTO 5 POSITION [78, 1, 4, 3, 2, 23]
위 실행 결과에서 입력된 리스트 [2, 3, 4, 1, 78, 23]의 앞 5개 요소가 [78, 1, 4, 3, 2]로 뒤집히고, 마지막 요소 23은 제자리에 그대로 남아 있는 것을 확인할 수 있습니다.
마무리
이처럼 파이썬의 슬라이싱 기능을 활용하면 반복문이나 추가 변수 없이 한 줄의 코드로 특정 위치까지의 배열을 손쉽게 뒤집을 수 있습니다. 시간 복잡도는 O(n)으로 효율적이며, 리스트 조작 문제를 풀 때 자주 활용되는 유용한 패턴이니 꼭 기억해 두시기 바랍니다.