파이썬 문자열 뒤집기

skyepodium·2021년 8월 11일
0

여러 방법이 있지만 가장 효율적인 슬라이싱을 사용해주세요.

파이썬의 문자열을 뒤집는 방법 3가지를 코드와 시간을 통해 비교하고 어느 방법이 효율적인지 알아봅시다.

    1. 슬라이싱
    1. 리스트 reverse() 메소드
    1. 반복문

1. 슬라이싱

1) 코드

슬라이싱을 통해 뒤집습니다. 코드도 간단합니다.

s = "Hello World"

s = s[::-1]

print(s)
# dlroW olleH

2) 시간

길이 1억의 문자열을 뒤집는데 약 0.18초가 소요됩니다.

import time

# 1. 반복문 횟수 - 1억
max_val = 100000000
s = "a" * max_val

# 2. 시간 계산
start_time = time.time()

s = s[::-1]

end_time = time.time()

# 3. 시간 출력
print(end_time - start_time)
# 0.18599224090576172

2. 리스트 reverse()

1) 코드

s = "Hello World"

# rerversed 메소드는 문자열을 뒤집고 리스트를 반환합니다.
s = "".join(reversed(s))

print(s)

2) 시간

길이 1억인 문자열을 뒤집는데 약 2초가 소요됩니다.

import time

# 1. 반복문 횟수 - 1억
max_val = 100000000
s = "a" * max_val

# 2. 시간 계산
start_time = time.time()

s = "".join(reversed(s))

end_time = time.time()

# 3. 시간 출력
print(end_time - start_time)
# 2.231611967086792

3. 반복문

1) 코드

rerversed 메소드로 받은 뒤집어진 리스트를 join을 사용해 문자열로 만들어줍니다.

s = "Hello World"

reversed_s = ""

# 원래 문자열을 빈 문자열의 앞에서 부터 더해서 뒤집습니다.
for c in s:
    reversed_s = c + reversed_s

c = reversed_s

print(c)
# dlroW olleH

2) 시간

20분 동안 실행했는데 결과가 안나왔습니다. 하지 마세요.

import time

# 1. 반복문 횟수 - 1억
max_val = 100000000
s = "a" * max_val

# 2. 시간 계산
start_time = time.time()

reversed_s = ""

for c in s:
    reversed_s = c + reversed_s

s = reversed_s

end_time = time.time()

# 3. 시간 출력
print(end_time - start_time)
# ....
profile
callmeskye

0개의 댓글