Algorithm/LeetCode

[LeetCode] 283. Move Zeroes

rrojin 2022. 3. 2. 12:16

문제링크

https://leetcode.com/problems/move-zeroes/

 

Move Zeroes - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

코드

1
2
3
4
5
6
7
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        nonzero = 0
        for i in range(len(nums)):
            if nums[i] != 0:
                nums[nonzero], nums[i] = nums[i], nums[nonzero]
                nonzero += 1
cs

 

POINT

two pointers를 사용한다. (nonzero & i)

nonzero pointer는 0이 아닌 값을 추가할 위치를 가리키는 pointer이고,

i pointer는 nums list를 탐색하는 pointer이다.

 

i가 nums 를 차례대로 탐색하다가 0이 아닌 값을 발견하면 현재 nonzero가 가리키고 있는 인덱스 값과 자리를 바꾼다. 이를 통해서 0이 아닌 값은 앞쪽에 배치되고 0인 수는 뒤로 밀리게 된다.