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

파이썬 문자열 슬라이싱으로 문자열 회전 구현하기

문자열이 하나 주어졌을 때, 이를 두 가지 방향으로 회전시키는 것이 목표입니다. 하나는 시계 방향(오른쪽 회전), 다른 하나는 반시계 방향(왼쪽 회전)입니다.

1. 주어진 문자열을 d개의 요소만큼 왼쪽(반시계 방향)으로 회전합니다. (단, d <= n)

2. 주어진 문자열을 d개의 요소만큼 오른쪽(시계 방향)으로 회전합니다. (단, d <= n)

예제

입력: string = "pythonprogram"
d = 2
출력:
왼쪽 회전: thonprogrampy
오른쪽 회전: ampythonprogr

알고리즘

1단계: 문자열을 입력받습니다.
2단계: 문자열을 두 부분으로 나눕니다.
       - 왼쪽 회전: Lfirst = str[0 : d], Lsecond = str[d :]
       - 오른쪽 회전: Rfirst = str[0 : len(str)-d], Rsecond = str[len(str)-d :]
3단계: 두 부분을 second + first 순서로 이어 붙입니다.

핵심 개념: 문자열 슬라이싱

파이썬에서는 슬라이싱(slicing) 문법인 str[start:end]를 사용해 문자열의 특정 구간을 손쉽게 추출할 수 있습니다. 이 특성을 활용하면 별도의 반복문 없이 한 줄씩만으로 문자열 회전을 구현할 수 있습니다.

  • 왼쪽 회전: 앞부분(d번째까지)을 잘라 뒤로 보냅니다 → str[d:] + str[:d]
  • 오른쪽 회전: 뒷부분(마지막 d개)을 잘라 앞으로 보냅니다 → str[-d:] + str[:-d]

예제 코드

def rotate(input, d):
    # 왼쪽 회전과 오른쪽 회전을 위해 문자열을 두 부분으로 나눔
    Lfirst = input[0 : d]
    Lsecond = input[d :]
    Rfirst = input[0 : len(input) - d]
    Rsecond = input[len(input) - d :]

    print("Left Rotation : ", (Lsecond + Lfirst))
    print("Right Rotation : ", (Rsecond + Rfirst))

# 드라이버 프로그램
if __name__ == "__main__":
    s = input("Enter String ::>")
    d = 2
    rotate(s, d)

실행 결과

Enter String ::> pythonprogram
Left Rotation : thonprogrampy
Right Rotation : ampythonprogr

동작 원리 살펴보기

입력 문자열이 "pythonprogram"이고 d가 2일 때의 동작 과정은 다음과 같습니다.

왼쪽 회전 (반시계 방향)

  • Lfirst = "py" (인덱스 0~1)
  • Lsecond = "thonprogram" (인덱스 2부터 끝까지)
  • 결합 결과: "thonprogram" + "py"thonprogrampy

오른쪽 회전 (시계 방향)

  • Rfirst = "pythonprogr" (처음부터 뒤에서 2글자 앞까지)
  • Rsecond = "am" (마지막 2글자)
  • 결합 결과: "am" + "pythonprogr"ampythonprogr

마무리

이처럼 파이썬의 문자열 슬라이싱을 활용하면 반복문이나 추가 라이브러리 없이도 간결하고 직관적으로 문자열 회전을 구현할 수 있습니다. 시간 복잡도는 O(n)으로 효율적이며, 코딩 테스트나 실무에서 자주 활용되는 기본 패턴이니 꼭 익혀두시기 바랍니다.