283. Move Zeroes

Taesoo Kim·2023년 1월 5일
0

CrackingAlgorithm

목록 보기
6/36

283. Move Zeroes

보자마자 투포인터라는 생각을 했는데 생각보다 구현이 바로 되진 않았다.
아직은 좀 익숙하지 않은듯?

간단하게 풀자면 정말 간단하다.

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
    
        for i in nums:
            if i == 0:
                nums.pop(nums.index(i))
                nums.append(0)
        return nums

인덱스 별로 도는데 0을 마주치면 pop하고 append(0)를 해주는 방식이다.
그래도 투포인터로 푸는게 맞겠다 싶어서 만들어 봤다.

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
    
        start = 0

        for idx in range(len(nums)):
            if nums[idx] != 0:
                nums[idx], nums[start] = nums[start], nums[idx]
                start += 1
        
        return nums

우선 start와 idx를 투포인터로 잡는다. start는 가장 왼쪽의 0에 두고, idx로 배열을 돌면서, 0이 아닌값과 start에 있는 0과 스왑해주는 방식이다. 투포인터의 기본인 문제.

profile
SailingToTheMoooon

0개의 댓글