Algorithm - 0 이동 시키기

이주명·2021년 12월 5일
0

문제

주어진 숫자 배열에서, 0을 배열의 마지막쪽으로 이동시켜주세요. 원래 있던 숫자의 순서는 바꾸지 말아주세요.

새로운 배열을 생성해서는 안 됩니다.

Input: [0,1,0,3,12]
Output: [1,3,12,0,0]

방법 1

def move_zeroes(nums):
  i = 0
  count = 0
  while count < len(nums)  :
    if nums[i] == 0 :
      nums.append(nums[i])
      del nums[i]
      count = count +1
      continue
    i = i + 1
    count = count + 1
  return nums

내가 풀었던 방법은 append를 이용하고 del함수를 사용해서
첫번째 부터 차례대로 검사하여 0일 경우 list.append()를 하고
삭제한다. 삭제될 경우 앞에 인자가 한칸 당겨서 올테니 i는 +1 하지말기로 한 countinu 함수를 사용하여 다시 while문을 돈다.

count 라는 변수를 줘서 len(nums) 만큼 실행시키고 마지막을 리턴시킨다. 좋은 방법인지는 모르겠지만 일단 다른 방법에 비해 코드가 길고 함수를 두개나 사용했기 때문에 별로 지향하진 않는다.

방법 2

def move_zeroes(nums):
  j = 0

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

두번째 방법은 앞뒤로 비교해서 0을 뒤로 넘기는 방법이다
갑자기 지금 보니까 이해가 안된다.. 아시는 분은 댓글 달아주세요

profile
oh yeah

0개의 댓글