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

주어진 위치까지 배열을 뒤집는 파이썬(Python) 프로그램

이 글에서는 사용자로부터 배열(리스트)과 뒤집고자 하는 위치 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)으로 효율적이며, 리스트 조작 문제를 풀 때 자주 활용되는 유용한 패턴이니 꼭 기억해 두시기 바랍니다.