LeetCode > 283. Move Zeroes

Doyeon Kim·2022년 3월 23일

코딩테스트 공부

목록 보기
40/171

문제 링크 ; 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
profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글