2. Reverse String

아현·2021년 3월 4일
0

Algorithm

목록 보기
3/400

리트코드

** 리턴 없이 리스트 내부를 직접 조작하라는 제약 사항이 있으므로 다음과 같이 s 내부를 스왑하는 형태로 풀이하면 된다.

투포인터를 이용한 스왑

  • 2개의 포인터를 이용해 범위를 조정해가며 풀이하는 방식

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        left, right = 0, len(s) -1
        while left < right:
            s[left], s[right] = s[right], s[left]
            left += 1
            right -= 1
        



파이썬다운 방식

  • 파이썬의 기본 기능을 이용하면 단 한줄로 풀이할 수 있다.
    이러한 방식들을 흔히 파이썬다운 방식(Pythonic way)이라 부른다.

1) 리스트 reverse()함수 사용

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        s.reverse()



2) 슬라이싱 사용

  • 리트코드 오류 발생: 공간 복잡도 O(1)로 제한하다보니 변수 할당을 처리하는 데 제약 발생함
    -> 트릭 사용
class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        s[:] = s[::-1]
        

해커링크나 코딜리티 코딩 플랫폼으로 테스트를 치러야 할 때는 또 다르게 동작할 수 있으므로, 시험을 치르기에 앞서 각 플랫폼의 특징에 대해 충분히 숙지해둬야 한다.

profile
For the sake of someone who studies computer science

0개의 댓글