Published:
Updated:

  • Reference
  • 시간복잡도: $O(N)$
  • Runtime 158ms
  • Beats 95.91%


Solution

class Solution:
    # 0인 것과, 0이 아닌 것 나눠서 생각
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        array_zero = []
        array = []

        for num in nums:
            # 0인 배열 재생성
            if num == 0:
                array_zero.append(num)
            # 0이 아닌 일반 배열 재생성
            else:
                array.append(num)

            # 아래처럼 쓸 수도 있음 (3항)
            # array_zero.append(num) if num == 0 else array.append(num)
        
        # return 하는 게 아니라 nums에 다시 넣어줘야 함
        # 배열[:]은 전체 슬라이스를 의미 -> 배열의 모든 요소를 선택하는 것과 같음
        # 이렇게 하면 가리키는 객체가 변경되지 않고 해당 객체의 내용만 변경됩 -> 제자리 수정
        nums[:] = array + array_zero

Leave a comment