본문 바로가기

Algorithm

[LeetCode]Remove Duplicates from Sorted Array (Splice, Set 활용)

코딩테스트를 기탄수학처럼 매일 꾸준히 푸는 개발자가 되고 싶지만, 마음처럼 쉽지 않다.

(생각해보면, 기탄수학도 그렇게 꾸준히 푸는 학생은 아니었음 ㅎ)

 

 

문제 :

 

풀이 : 

const removeDuplicates = (nums) => {
    let newArr = [...new Set(nums)];
    return newArr;
};

 

처음에는 단순 중복 제거문제라고 생각해서 Set()을 사용해 문제를 풀었다.

 

 

아무 것도 출력이 안된다. 

 

 

콘솔로도 찍어보고 한참을 빙빙 돌다가 문제를 다시 보니 in-place 가 눈에 띈다. 

최초에 Param으로 주어지는 nums 내에서 값을 수정해야 한다.

 

새로운 변수를 할당하지 않고 어떻게 풀 수 있을까.

for문을 돌리는 방법이 있겠으나, 그게 더 어렵게 느껴지고

어떻게 Set(nums)을 재활용해 볼 수는 없을까. 

 

/**
 * @param {number[]} nums
 * @return {number}
 */
const removeDuplicates = function(nums) {
   nums.splice(0, nums.length, ...(new Set(nums)));
};

rumtime : 75ms

 

전달받은 Param num을 splice()함수를 활용해

처음부터 nums의 길이 만큼(전체) 잘라서 새로운 값Set(nums)으로 대체한다.

 

For문을 잘 활용할 줄 알아야하는데 꼼수만 부린 느낌이다...