보자마자 투포인터라는 생각을 했는데 생각보다 구현이 바로 되진 않았다.
아직은 좀 익숙하지 않은듯?
간단하게 풀자면 정말 간단하다.
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과 스왑해주는 방식이다. 투포인터의 기본인 문제.