[프로그래머스][파이썬] 문자열 뒤집기 - 문자열 (Level 0)

뻥튀기아이스크림·2025년 3월 11일
1
post-thumbnail

◽ 문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/120822

◽ 문제

◽ 입력 & 출력

◽ 내 풀이

def solution(my_string):
    return my_string[::-1]
  • 처음부터 끝까지 인덱스 역방향으로 반환하기
  • reverse() 함수도 생각했지만, 단순히 반환만 하는 문제라 슬라이싱으로 반환했다.

◽ 다른 사람 풀이

def solution(my_string):

    my_list = list(my_string)
    my_list.reverse()

    answer = ''.join(my_list)

    return answer
  • reverse() 함수를 사용하기 위해 리스트로 변환한 후에 answer 변수에 문자열을 담아 반환한 것으로 보인다.
  • join() 함수를 사용해보지 않아서 for 문으로 저장하여 반환했을 것 같다...

◽ 더 나아가기

  • 만약 리스트에 있는 문자를 문자열로 만들기 위해 for 문으로 연결한다면 O(n^2)이 되어버린다.

  • 파이썬에서 문자열은 불변 객체(Immutable Object) 이기 때문에 문자열을 변경할 때마다 새로운 문자열 객체가 생성된다.

  • 따라서 매 반복마다 새로운 문자열이 생성되고 기존 문자열이 복사되므로, 전체 연산이 O(n^2)이 된다.

  • 이럴 때, join() 함수를 사용하면 O(n) 의 시간복잡도로 문자열을 얻을 수 있다.

  • 파이썬 내부적으로 메모리를 한 번만 할당하여 문자열을 효율적으로 생성한다.

  • 참고) https://stackoverflow.com/questions/37133547/time-complexity-of-string-concatenation-in-python



피드백은 언제나 환영입니다 :)

profile
성장하고 싶은 개발자

0개의 댓글