주어진 숫자 배열에서, 0을 배열의 마지막쪽으로 이동시켜주세요.
원래 있던 숫자의 순서는 바꾸지 말아주세요.
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]
need to know
- 새로운 배열이 아닌 그냥 기존배열을 그대로 가지고 바꾸는거
- 자리를 바꿔준다.
- 배열이 홀 수일때의 경우를 잘 생각해봐라
문자로 짜봐
- 먼저, 배열을 하나씩 훑기 위해서 while문을 사용하고, 인덱스 0부터 시작하기위해 n=0 으로 주고 시작하자.
- 이때, 0일때는 숫자 빼서(
nums.pop(n)) 바로 뒤로 보내고(nums.append(nums_pop)), 따로 그다음 인덱스의 숫자를 검사할필요 없으니 그냥continue해서 위로 올라가자- 글고 0이 아닐 때, 인덱스인
n에+1해서 다시 돌려주도록continue가자- 중요한건, 언제 그만하는가 ... ? 결국 0은 다 뒤로가기 때문에, 앞쪽의 0이 아닌 숫자의 개수만큼만 해주면 된다.
정답
def move_zeroes(nums): n = 0 # 1 while n < len(nums)-nums.count(0): #1,4 if nums[n] == 0: # 2 nums_pop = nums.pop(n) nums.append(nums_pop) continue elif nums[n] != 0: # 3 n += 1 continue return nums
참고
while문,continue, `break``- `count()``
pop()append()