문제 링크 ; https://leetcode.com/problems/move-zeroes/
처음에 문제를 보고 간단하게 nums를 탐색한 뒤 0이 발견되면 없애고 뒤에 0을 append 하는 방식으로 코드를 작성해보았다
ㅌ for i in range(len(nums)):
if nums[i] == 0:
nums.pop(i)
nums.append(0)
그런데 Run Code를 눌러서 [0,1,0,3,12] 테.케에는 성공했는데
제출했더니
Input
[0,0,1]
Output
[0,1,0]
Expected
[1,0,0]
나와서 실패함
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
i = 0
l = len(nums)
while i<l:
if nums[i] == 0:
nums.pop(i)
nums.append(0)
l -= 1
else :
i += 1
"""
Do not return anything, modify nums in-place instead.
"""
0부터 nums의 개수까지 탐색하면서
만약에 0이라면
0을 삭제하고 뒤에 넣어주고
원래 len(nums)의 배열이 줄어들었으니까 하나를 추가해준다.
Runtime: 366 ms, faster than 19.87% of Python3 online submissions for Move Zeroes.
Memory Usage: 15.5 MB, less than 91.30% of Python3 online submissions for Move Zeroes.
5/15일 정확히 똑같이 이전과 같은 로직으로 생각해서 풀었다......
그리고 nums의 배열 수를 l로 선언하지 않고 그냥 len(nums) -= 1하면 오류남
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
i=0
l = len(nums)
while i < l:
if nums[i] == 0:
nums.pop(i)
nums.append(0)
l -= 1
else:
i += 1
return nums