728x90
📍 문자열 뒤집기(reverse string)
문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라
⚡️ 나의 풀이
문자열을 뒤집는 함수는 대표적으로 reverse()
함수가 있는데, 책에서는 투 포인터(two_pointer
)를 이용한 스왑방식과 파이썬 다운 방식인 reverse
함수를 이용했다.
투 포인터 알고리즘은 Left
와 Right
의 인덱스
를 선언하여 범위를 조정해서 풀이하는 방식인데, 나는 평소에 잘 사용하지 않았던 방식이다. 전통적인 방식이니까 어떻게 사용하는지 알고있자.
728x90
그리고 Left
와 Right
를 0
과 len(s)-1
로 선언한 이유는 index
가 0부터 세기때문에 0으로 주었고 또, len
값에서 -1해준 값이 제일 마지막 index
값이된다.
두번째 코드를 리트코드에서 풀게되면 오류가 발생하는데, 공간 복잡도를 O(1)
로 제한하다 보니 변수 할당을 처리하는 데 다소 제약이 있다. 이때 다음과 같은 트릭을 사용하면 잘 동작한다.
# 투 포인터 코드
def solution(s):
left, right = 0, len(s)-1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
# reverse 코드
def solution(s):
s.reverse()
# 트릭을 사용한 코드
def solution(s):
s[:] = s[::-1]
반응형
'Python > 파이썬을 알고리즘 인터뷰' 카테고리의 다른 글
[ 6. 문자열 조작 ] - 그룹 애너그램(Group Anagrams) (0) | 2021.04.06 |
---|---|
[ 6. 문자열 조작 ] - 로그파일 재정렬 (Reorder Log Files) (0) | 2021.04.06 |
[ 6. 문자열 조작 ] - 가장 흔한 단어(Most Common Word) (0) | 2021.04.04 |
[ 6. 문자열 조작 ] - 문자열 슬라이싱(String Slicing) (0) | 2021.04.02 |
[ 6. 문자열 조작 ] - 유효한 팰린드롬(Valid Palindrome) (0) | 2021.04.02 |
댓글