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

파이썬으로 특정 위치까지만 배열 뒤집기 – 반복문과 슬라이싱 활용법

문제 소개

이 튜토리얼에서는 파이썬을 사용해 주어진 위치까지만 배열을 뒤집는 방법을 배워보겠습니다. 먼저 문제 상황부터 살펴볼까요?

정수로 이루어진 배열(arr)과 숫자 n이 주어졌을 때, 배열의 0번째 인덱스부터 (n-1)번째 인덱스까지의 요소들만 뒤집는 것이 목표입니다. 예를 들면 다음과 같습니다.

입력
array = [1, 2, 3, 4, 5, 6, 7, 8, 9], n = 5
출력
[5, 4, 3, 2, 1, 6, 7, 8, 9]

방법 1: 반복문으로 요소 교환하기

목표를 달성하는 절차는 다음과 같습니다.

  • 배열과 숫자 n을 초기화합니다.
  • n / 2번만큼 반복하면서 i번째 인덱스(n-i-1)번째 인덱스의 요소를 서로 교환(swap)합니다.
  • 결과 배열을 출력합니다.

예제 코드

# 배열과 숫자 초기화
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
n = 5

# n 값이 배열 길이보다 작거나 같은지 확인
if n > len(arr):
    print(f'{n} 값은 유효하지 않습니다')
else:
    # n // 2번만큼 반복하며 앞뒤 요소 교환
    for i in range(n // 2):
        arr[i], arr[n - i - 1] = arr[n - i - 1], arr[i]
    # 결과 출력
    print(arr)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

출력 결과

[5, 4, 3, 2, 1, 6, 7, 8, 9]

방법 2: 슬라이싱(Slicing) 활용하기

더 간단하고 파이썬다운 방법은 슬라이싱을 이용하는 것입니다. 절차는 아래와 같습니다.

  • 배열과 숫자 n을 초기화합니다.
  • (n-1)부터 0까지 역순으로 슬라이싱한 부분과 n부터 배열 끝까지 슬라이싱한 부분을 서로 연결(concatenate)합니다.

코드를 살펴보겠습니다.

예제 코드

# 배열과 숫자 초기화
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
n = 5

# n 값이 배열 길이보다 작거나 같은지 확인
if n > len(arr):
    print(f'{n} 값은 유효하지 않습니다')
else:
    # n 위치까지만 배열을 뒤집음
    # arr[n-1::-1]: 인덱스를 하나씩 감소시키며 (n-1)부터 0까지 추출
    # arr[n:]: 인덱스 n부터 배열 끝까지 추출
    arr = arr[n-1::-1] + arr[n:]
    # 결과 출력
    print(arr)

위 코드를 실행하면 첫 번째 방법과 동일하게 다음 결과를 얻을 수 있습니다.

출력 결과

[5, 4, 3, 2, 1, 6, 7, 8, 9]

마무리

두 방법 모두 시간 복잡도는 O(n)으로 동일하지만, 슬라이싱을 활용한 방식이 코드가 더 간결해서 실무에서 자주 사용됩니다. 반면 반복문을 이용한 방식은 배열 뒤집기의 핵심 원리를 이해하는 데 도움이 되므로, 코딩 테스트 준비에는 두 가지 모두 익혀두는 것이 좋습니다. 프로그램에 대해 궁금한 점이 있다면 댓글로 남겨주세요!