1Day 1Practice

[codewars] Moving Zeros To The End

Bittersweet- 2022. 7. 12. 10:24
728x90

Instruction.

Write an algorithm that takes an array and moves all of the zeros to the end, preserving the order of the other elements.

배열 요소 중 0을 제외한 나머지 요소의 순서를 유지하면서, 배열에 포함된 0을 모두 마지막으로 이동 시키는 알고리즘을 완성하라.

 

Example.

moveZeros([false, 1, 0, 1, 2, 0, 1, 3, "a"]) // returns [false, 1, 1, 2, 1, 3, "a", 0, 0]

 


 

Solution.

function moveZeros(arr) {
  return arr.filter(function(x) {return x !== 0})
  .concat(arr.filter(function(x) {return x === 0})
   );
}

* filter() - 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환

concat() - 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환(** 기존 배열을 변경하지 않고 추가된 새로운 배열을 반환함)

 

Other solution.

function moveZeros(arr) {
  return [
    ...(arr.filter(n => n !== 0)),
    ...(arr.filter(n => n === 0))
  ];
}

* ...(Spread Operator) - 기존에 두개의 배열을 결합하는데 concat 대신 더 깔끔한 병합이 가능

var arr1 = [1,2,3];
var arr2 = [4,5,6];

var arr = [...arr1, ...arr2];
console.log(arr); // [1,2,3,4,5,6]

 

'1Day 1Practice' 카테고리의 다른 글

[codewars] pick peaks  (0) 2022.08.04
[codewars] Simple Pig Latin  (0) 2022.08.02
[codewars] Count characters in your string  (0) 2022.07.08
[codewars] Human Readable Time  (0) 2022.07.07
[codewars] First non-repeating character  (0) 2022.06.23