코드카타 #14

TaeYang·2021년 10월 9일
0

CodeKata

목록 보기
6/8

문제

주어진 숫자 배열에서, 0을 배열의 마지막쪽으로 이동시켜주세요. 원래 있던 숫자의 순서는 바꾸지 말아주세요.

(새로운 배열을 생성해서는 안 됩니다.)

Input: [0,1,0,3,12]
Output: [1,3,12,0,0]

풀이

let nums = [0,1,0,3,12];
const moveZeroes = nums => {
  for(let i = nums.length-1; i >= 0; i--){
    if(nums[i]===0){
      nums.push(nums.splice(i, 1)[0]); 
      console.log(nums)//   [ 0, 1, 3, 12, 0 ],[ 1, 3, 12, 0, 0 ]
    }
  }
  return nums;   //   [ 1, 3, 12, 0, 0 ]
};

풀이 과정

  • 반복문을 뒤에서 부터 돌려 줍니다
  • 반복문을 돌려 나온 nums[i]가 0일때 조건문을 만들어줍니다
  • 위에 조건이 트루일때 numssplice 메서드로 0을찾아 잘라내고 push 메서드로 뒤쪽으로 넣어줍니다
  • nums를 반환해 줍니다.

회고

한동안 코드카타에 나오느 문제들을 풀지 못하다가 요번 문제는 그나마 풀만 했던 문제였던거 같습니다. 원래는 반복문을 뒤에서말고 앞에서부터 돌렸었는데 테스트 2개중 하나만 통과를하게 되어서 뒤에서부터 돌려 보니 전부 통과를 하게되었는데 아직도 왜그런지 이유를 찾지 못해 풀다만 문제 인거 같은 느낌이 드는 문제였다.

profile
음악 전공 이였던 예비 프론트엔드 개발자☀️

0개의 댓글