주어진 숫자 배열에서, 0을 배열의 마지막쪽으로 이동시켜주세요. 원래 있던 숫자의 순서는 바꾸지 말아주세요.
(새로운 배열을 생성해서는 안 됩니다.)
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]
let nums = [0,1,0,3,12];
const moveZeroes = nums => {
for(let i = nums.length-1; i >= 0; i--){
if(nums[i]===0){
nums.push(nums.splice(i, 1)[0]);
console.log(nums)// [ 0, 1, 3, 12, 0 ],[ 1, 3, 12, 0, 0 ]
}
}
return nums; // [ 1, 3, 12, 0, 0 ]
};
nums[i]
가 0일때 조건문을 만들어줍니다nums
에 splice
메서드로 0을찾아 잘라내고 push
메서드로 뒤쪽으로 넣어줍니다nums
를 반환해 줍니다.한동안 코드카타에 나오느 문제들을 풀지 못하다가 요번 문제는 그나마 풀만 했던 문제였던거 같습니다. 원래는 반복문을 뒤에서말고 앞에서부터 돌렸었는데 테스트 2개중 하나만 통과를하게 되어서 뒤에서부터 돌려 보니 전부 통과를 하게되었는데 아직도 왜그런지 이유를 찾지 못해 풀다만 문제 인거 같은 느낌이 드는 문제였다.