오늘의 알고리즘은 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에 있는 함수 하나하나 들여다 볼 수 있었기에 소중한 시간이었다.