5/13 CODE KATA #13

ym j·2021년 5월 16일
0

Algorithm

목록 보기
7/9
post-thumbnail

CODE KATA

Problem

문제

주어진 숫자 배열에서, 0을 배열의 마지막쪽으로 이동시켜주세요.
원래 있던 숫자의 순서는 바꾸지 말아주세요.
(새로운 배열을 생성해서는 안 됩니다.)

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


Code

const moveZeroes = (nums) => {
  const endIndex = nums.length - 1; // 끝에서 부터 시작
  for (let i = endIndex; i > -1; i--) {
    if (nums[i] === 0) {
      nums.splice(i, 1); // 0을 만날 시 0을 잘라낸다.
      nums.push(0); // 0을 맨 뒤에 추가
    }
  }
  return nums;
};
const number = [0, 1, 0, 3, 12];
const result = moveZeroes(number);
console.log(result); // [1,3,12,0,0]

Refactoring

const moveZeroes = (nums) => {
  const endIndex = nums.length - 1;
  for (let i = endIndex; i > -1; i--) {
    nums[i] === 0 && nums.push(...nums.splice(i, 1));
  }
  return nums;
};
const number = [0, 1, 0, 3, 12];
const result = moveZeroes(number);
console.log(result); // [1,3,12,0,0]
  • 처음에 접근했을 때는 앞에서부터 숫자를 빼내었지만, index가 동적으로 변하기에 원하는 값이 안나왔다. 계속 고민하던 도중 유진님의 도움으로 뒤에서부터 접근하여 0을 잘라내었다. (역시 갓유진님...)

  • 확실히 React의 조건부 렌더링을 접한 후, 리팩토링시 코드가 좀더 간결해짐을 느낄 수 있었다. 물론 처음으로 접할 때는 최적화(?)된 코드가 잘 나오지 않지만 다시 한 번 봤을 때, 좀 더 효율적으로 작성할 수 있는 힘이 생기는 것 같아 기분이 좀 좋아져간다!! 😊😊

profile
블로그를 이전하였습니다 => "https://jymini.tistory.com"

0개의 댓글