TIL - Wecode | Code Kata .06

한성봉·2021년 6월 12일
0

code kata

문제

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

새로운 배열을 생성해서는 안 됩니다.
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]

🤛 나의 풀이

def move_zeroes(nums):
  result = []
  result_zero = []
  for i in nums:
    if i == 0:
      result_zero.append(i)
    else:
      result.append(i)
      
  return result + result_zero

print(move_zeroes([0,1,0,3,12]))
#[1, 3, 12, 0, 0]

나는 nums로 들어오는 리스트를 0과 0이 아닌 숫자로 분리해준 후 나중에 뒤에 더해주면 끝난다고 생각했다. 테스트는 통과했지만 이렇게 푸는게 아닌 걸 알았다...
문제에서 새로운 배열을 생성하지말라는 조건이 있었다. 나는 이게 무슨말인지 이해가 되지않아 넘어갔던 것이다. 이 말은 나의 풀이에 나와있듯 result = [] 의 형태로 새로운 배열을 만들지 않고 문제를 해결해야했다.. 테스트 통과해서 그냥 끝난줄 알았지만 아니었다.

🤛 다른 풀이

def move_zeroes(nums):
  count = nums.count(0)
  
  for i in range(len(nums)):
    if 0 in nums:
      nums.remove(0)
    
  for i in range(count):
    nums.append(0)
  
  return nums

print(move_zeroes([0,1,0,3,12]))

이런 식으로 새로운 배열의 생성없이 풀어야했었다..;; 문제를 잘 파악하는 것도 하나의 능력이라는 것을 깨닫는 코드카타 시간이었다.

0개의 댓글