알고리즘 #day-09

seonja kim·2020년 7월 15일
0

오늘의 알고리즘은 JS의 함수들을 하나씩 둘러볼 수 있어 도움이 되었다. 코딩실력이 조금씩 늘고있구나 느꼈던 점은 예전에는 MDN을 아무리 읽어봐도 전혀 이해가 가지 않았는데 이제는 예제만 보고도 어떻게 써야할지 알게 되었다는 것! (개인적으로 감동쓰...)


오늘의 문제


정말 쉬운 문제지만 풀지 못 하였다.
그래도 여러 의미있는 시도들을 했다고 생각해서 기록으로 남기고 싶어 블로그 작성!

풀이들

첫 번째 고민

var moveZeroes = function(nums) {
  nums.sort()
   let lastZero = nums.lastIndexOf(0)
   let allZero = nums.slice(0,lastZero+1)
   let exceptZero = nums.splice(lastZero+1)
   return exceptZero.concat(allZero)
};

처음에는 정렬을 통해 0부터 마지막 0을 자르고 붙여넣으려고 시도했지만 sort()라는 함수는 12와 3이 있을 경우 12는 1로 시작하기에 3보다 더 앞에 정렬되게 된다.


예시 [0,1,3,0,12]일 때, nums.sort()를 할 경우 [0,0,1,12,3] 이렇게 정렬된다.


두 번째 고민

var moveZeroes = function(nums) {
   let lastZero = nums.sort().lastIndexOf(0)
   let firstToLate = nums.slice(0,lastZero+1)
   let lateToFirst = nums.slice(lastZero+1)
   return lateToFirst.concat(firstToLate)
};

첫 번째 고민과 비슷한 로직이라 의미가 없었다...


세 번째 고민


필요한 요소만 찾아서 제외할 수 있는 JS함수를 찾았지만 없.었.다.

.splice()에 맞게 적용시켜야 풀 수 있다.


동기의 풀이

var moveZeroes = function(nums) {
    for (let i = nums.length-1; i >= 0; i--) {        
        if (nums[i] === 0) {
            nums.splice(i, 1);          
            nums.push(0);
        }        
    }   
};

느낀점

쉬운 문제를 못 풀었다고 좌절 금지!!
오늘은 MDN에 있는 함수 하나하나 들여다 볼 수 있었기에 소중한 시간이었다.

profile
Adventurer

0개의 댓글