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 |