코딩테스트를 기탄수학처럼 매일 꾸준히 푸는 개발자가 되고 싶지만, 마음처럼 쉽지 않다.
(생각해보면, 기탄수학도 그렇게 꾸준히 푸는 학생은 아니었음 ㅎ)
문제 :
풀이 :
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문을 잘 활용할 줄 알아야하는데 꼼수만 부린 느낌이다...
'Algorithm' 카테고리의 다른 글
[LeetCode] Contains Duplicate (3가지 풀이방법) (0) | 2023.09.06 |
---|---|
[LeetCode]Best Time to Buy and Sell Stock II (0) | 2023.09.01 |
[coderbyte/js] First Reverse (0) | 2022.07.07 |
[coderbyte/js] First Factorial (0) | 2022.07.07 |
[프로그래머스/js] 하샤드 수 (reduce를 사용해 값을 누적하기) (0) | 2022.07.07 |