728x90


📌  풀이 1 (오답)

class Solution:
    def reverseString(self, s: List[str]) -> None:
        left = 0
        right = len(s) - 1

        while left < right:
            s[left] = s[right]
            s[right] = s[left]
            left += 1
            right -= 1

문제에서 '리턴 없이 리스트 내부를 직접 조작하라' 라는 제약사항이 있으므로 투 포인터를 이용해서 풀었다.

하지만 여기서 생각지 못한 오류가 있었는데 

    s[left] = s[right]
    s[right] = s[left]

해당 부분이 절차적으로 실행되면서 두 번째 줄이 실행 될 때는 이미 s[left]가 기존의 리스트와 달라져 있어 원하는 답이 나오지 않는 것이였다. 따라서 해당 부분을 동시에 실행해야 하는 필요성이 있었다.

 

 

 

 

 

📌  풀이 2 (정답)

class Solution:
    def reverseString(self, s: List[str]) -> None:
        left = 0
        right = len(s) - 1
        
        while left < right:
            s[left], s[right] = s[right], s[left]
            left += 1
            right -= 1

해답은 매우 간단하다. 

원하는 명령을 한 줄에 작성하여 비동기적으로 실행시키면 된다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

복사했습니다!