Move Zeroes (JS)

devmomo·2021년 4월 2일
0

알고리즘

목록 보기
49/52

Move Zeroes

문제 분석
정수를 원소로 하는 배열 nums가 주어졌을 때, 0을 제외한 나머지 원소들의 순서는 유지하며 0인 원소만 배열의 끝으로 옮기는 solution을 만들어 보자.

주의사항
1. array를 복사하지 않고, 자체 배열 안에서 해결

풀이법
1. 단순 for문
2. 0을 이동하면서 주어진 배열의 순서가 바뀌지 않으려면 => bubble sort

develop => 0이 아닌 수를 순차적으로 앞으로 옮기면 정렬 후 배열의 순서 고민할 필요가 없어짐

풀이
0이 아닌 숫자를 찾아가는 포인터1, 항상 0을 가리키는 포인터2
포인터 1이 0이 아닌 숫자를 가리키면 해당 원소를 swap

function moveZeroes(nums){
// 포인터 2 (파란색)
let wIdx=0;
// 포인터 1 (주황색)
for ( let idx=0; idx<nums.length; idx++ ){
	if(nums[idx]!==0){
    swap(nums[wIdx],nums[idx]);
    wIdx++;
}
}
}

풀이

var moveZeroes = function(nums) {
    let wIdx = 0;
    for ( let Idx =0; Idx<nums.length; Idx++ ){
        if(nums[Idx]!==0) {
            swap(Idx,wIdx,nums);
            wIdx++;
        }
    }
};
function swap(numsIdx,numswIdx,nums) {
    let num = nums[numsIdx];
    nums[numsIdx] = nums[numswIdx];
    nums[numswIdx] = num;
}
profile
FE engineer

0개의 댓글