배열을 받아서 0숫자는 전부다 배열의 끝에 옮겨주는 문제이다.
const moveZeroes = nums => {
let j = 0
for(let i=0; i<nums.length; i++) {
if(nums[i] === 0) {
let arr = nums.splice(i, 1)
nums.push(arr[0])
i--
j++
if(j === nums.length) {
return nums
}
}
}
}
먼저 가장위에 변수 하나를 선언하고 0을 할당해준다. 그리고 반복문을 돌면서 배열을 탐색하면서 해당 인덱스의 숫자가 0이면
splice를 해주고 arr변수에 할당을 하고 그 할당된 변수를 다시 nums배열에 push를 해준다. arr변수에는 항상 [0] 배열이
들어가있다. splice메소드를 찾아보면 알겠지만 제거한 요소들을 모아서 배열로 할당을 해준다.
arr에는 항상 하나의 요소인 0만 들어가서 arr[0]을 push해주면 배열의 맨뒤로 들어간다.
그리고 여기서 i-- j++를 해주는데 이유는 빼고 난뒤에 그냥 반복문으로 돌아가게되면 해당 인덱스로 땡겨진 요소를
검사하지않고 뛰어넘기때문에 넣어준거다. 그리고 j++는 배열의 길이만큼 돌았을때 반복문을 종료하고 결과값을
반환해주기 위해서다. 이렇게 하지않으면 무한루프에 빠지기때문에 이 조건문을 넣어줘야한다!!
'Algorithm(Javascript)' 카테고리의 다른 글
53. Maximum Subarray (0) | 2022.02.13 |
---|---|
35. Search Insert Position (leetCode) (0) | 2022.02.13 |
알고리즘 문제 11 (0) | 2021.11.03 |
알고리즘 문제 10 (0) | 2021.11.01 |
알고리즘 문제 9 (0) | 2021.10.28 |