TIL75. CodeKata : 주어진 배열에서 0을 마지막으로 이동시키기 문제

ID짱재·2021년 11월 7일
0

CodeKata

목록 보기
11/18
post-thumbnail

🌈 주어진 배열에서 0을 마지막으로 이동시키기 문제



🤔 나의 Solution

주어진 숫자 배열에서, 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의 갯수만큼 맨 뒤에 위치하도록 해결하는 방법이다.

profile
Keep Going, Keep Coding!

0개의 댓글