주어진 숫자 배열에서, 0을 배열의 마지막쪽으로 이동시켜주세요. 원래 있던 숫자의 순서는 바꾸지 말아주세요. 새로운 배열을 생성해서는 안 됩니다.
✔️ 예를들어, parameter인 nums가 [0,1,0,3,12]로 전달된다면, [1,3,12,0,0]를 반환합니다.
def move_zeroes(nums): for i in range(0, len(nums)-1): swap = False for j in range(len(nums)-1-i): if nums[j] == 0: nums[j], nums[j+1] = nums[j+1], nums[j] swap = True if swap == False: break return nums print(move_zeroes([0,1,0,3,12])) # [1,3,12,0,0]
✔️ 2중 for문으로 순회를하면서 num[j]가 0일 때, swap을 시켜주는 방식으로 문제를 해결했다.
✔️ 2중 for문의 수행을 최소화 시키기 위해서 swapdl 이뤄지지 않았다면 더이상 for문이 실행되지 않도록 break를 통해 탈출시켰다.
def move_zeroes(nums): if 0 not in nums: return nums for i in nums: if i == 0: nums.remove(i) nums.append(i) return nums print(move_zeroes([0,1,0,3,12])) # [1,3,12,0,0]
✔️ 이 방법은 nums에 0이 없다면 바로 nums를 반환시키고, 존재한다면 for문 실행하다가 0을 만나면 0을 지우고 append함으로써 0의 갯수만큼 맨 뒤에 위치하도록 해결하는 방법이다.