본문 바로가기

Algorithm(Javascript)

알고리즘 문제 12

 

배열을 받아서 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