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

파이썬(Python)에서 문자열을 뒤집는 5가지 방법 총정리


파이썬(Python)에는 문자열을 뒤집는 전용 내장 함수가 없습니다. 따라서 원하는 결과를 얻으려면 직접 로직을 구현해야 합니다. 이번 글에서는 파이썬에서 문자열을 거꾸로 뒤집는 다섯 가지 대표적인 방법을 예제 코드와 함께 하나씩 살펴보겠습니다.

1. for 반복문 활용하기

이 방법의 핵심 아이디어는 문자열의 마지막 인덱스부터 0번 인덱스까지 역순으로 반복하는 것입니다. 매 반복마다 해당 인덱스의 문자를 새 문자열에 이어 붙이면, 반복이 끝난 시점에 뒤집힌 문자열이 완성됩니다.

전체적인 절차는 다음과 같습니다.

  • 새로운 빈 문자열 a를 생성한다.
  • 문자열의 마지막 인덱스부터 0번 인덱스까지 1씩 감소하며 반복하면서, a = a + 현재 인덱스의 문자를 수행한다.
  • 완성된 a를 반환한다.

예제

def reverse(s):
    a = ""
    last_index = len(s) - 1
    for i in range(last_index, -1, -1):
        a = a + s[i]
    return a

string = "TutorialsPoint"
print(reverse(string))

실행 결과

입력 : TutorialsPoint
출력 : tnioPslairotuT

위 방식을 조금 더 스마트하게 구현할 수도 있습니다. 여기서는 for-each 루프를 사용해 각 문자를 새 문자열의 앞쪽에 추가합니다. 문자를 계속 앞에 붙이다 보면 자연스럽게 뒤집힌 문자열이 만들어집니다. for-each 대신 일반 반복문으로 0번 인덱스부터 문자열 길이까지 순회하는 방식으로 바꿔도 동일하게 동작합니다.

예제

def reverse(s):
    a = ""
    for i in s:
        a = i + a
    return a

string = "TutorialsPoint"
print(reverse(string))

실행 결과

입력 : TutorialsPoint
출력 : tnioPslairotuT

2. while 반복문 활용하기

for 루프는 while 루프로 대체할 수 있습니다. 인덱스를 마지막 위치에서 0까지 감소시키며, 현재 인덱스의 문자를 새 문자열 끝에 계속 이어 붙이면 뒤집힌 문자열을 얻을 수 있습니다.

예제

def reverse(s):
    a = ""
    i = len(s) - 1
    while i >= 0:
        a = a + s[i]
        i -= 1
    return a

string = "TutorialsPoint"
print(reverse(string))

실행 결과

입력 : TutorialsPoint
출력 : tnioPslairotuT

3. 확장 슬라이싱(Extended Slice) 문법 활용하기

확장 슬라이싱 문법은 [start:end:step] 형태의 세 가지 요소를 사용합니다. start와 end를 생략하면 각각 0과 문자열 길이가 기본값으로 적용됩니다. 여기서 step을 -1로 지정하면 문자열의 끝에서 시작해 처음까지 거꾸로 진행하기 때문에, 뒤집힌 문자열을 손쉽게 얻을 수 있습니다.

예제

def reverse(s):
    a = s[::-1]
    return a

string = "TutorialsPoint"
print(reverse(string))

실행 결과

입력 : TutorialsPoint
출력 : tnioPslairotuT

4. join()과 reversed() 함수 활용하기

reversed() 함수를 사용하면 문자열을 뒤집을 수 있습니다. 다만 reversed()는 역방향 이터레이터(iterator)를 반환하기 때문에, 이 값을 그대로 사용할 수는 없습니다. 따라서 join() 함수로 이터레이터의 문자들을 하나로 연결해 문자열로 변환해 주어야 합니다.

예제

def reverse(s):
    a = "".join(reversed(s))
    return a

string = "TutorialsPoint"
print(reverse(string))

실행 결과

입력 : TutorialsPoint
출력 : tnioPslairotuT

5. 재귀(Recursion) 활용하기

재귀 호출로도 문자열을 뒤집을 수 있습니다. 인덱스 1부터 마지막까지의 문자열을 인자로 넘기며 reverse 함수를 계속 호출하는 방식입니다. 호출이 반복될수록 문자열 길이가 점점 줄어들고, 길이가 0이 되면 문자열을 그대로 반환하는 것이 기저 사례(base case)입니다. 즉, 매 재귀 호출마다 문자열을 인덱스 1부터 끝까지 슬라이싱하고, 잘려 나간 첫 번째 문자를 슬라이싱된 문자열의 맨 뒤에 이어 붙이는 것입니다.

예제

def reverse(s):
    if len(s) == 0:
        return s
    else:
        return reverse(s[1:]) + s[0]

string = "TutorialsPoint"
print(reverse(string))

실행 결과

입력 : TutorialsPoint
출력 : tnioPslairotuT

지금까지 파이썬에서 문자열을 뒤집을 수 있는 다섯 가지 방법을 살펴보았습니다. 상황과 목적에 따라 적합한 방법이 다르므로, 각 방식의 특성을 이해한 후 선택하는 것이 좋습니다.

어떤 방법이 가장 빠르고 효율적일까?

성능 면에서 가장 빠르고 실용적인 방법은 단연 슬라이싱(3번 방법)입니다. 다른 방법들과 비교해 실행 속도가 가장 빠를 뿐 아니라, 단 한 줄의 코드로 처리할 수 있고 별도의 반복 로직을 작성할 필요도 없어 구현이 매우 간단합니다. 실무에서는 s[::-1] 한 줄로 해결하는 것이 사실상 표준처럼 사용되고 있습니다.

참고로 파이썬의 문자열은 불변(immutable) 객체이기 때문에, 어떤 방법을 사용하든 원본 문자열 자체가 변경되는 것이 아니라 항상 새로운 문자열이 생성된다는 점도 함께 기억해 두면 좋습니다.