관리 메뉴

FU11M00N

[LeetCode] Remove Element - Javascript 본문

알고리즘

[LeetCode] Remove Element - Javascript

호IT 2023. 8. 23. 18:24

Remove Element

[Input 배열의 요소 제거]

제약 조건 

0 <= nums.length <= 100
0 <= nums[i] <= 50
0 <= val <= 100

Example

ex1) Input: nums = [3,2,2,3], val = 3
     Output: 2, nums = [2,2,_,_]

ex2) Input: nums = [0,1,2,2,3,0,4,2], val = 2
     Output: 5, nums = [0,1,4,0,3,_,_,_]

문제 접근 방식

nums 배열의 인덱스 값 중, val을 통해 입력되는 값을 제거하면 되니

nums 배열을 순회하며 val의 값이 존재하면 해당 배열을 삭제하고

남은 배열의 길이를 return 하면 된다고 생각했다.

전체코드

/**
 * @param {number[]} nums
 * @param {number} val
 * @return {number}
 */
var removeElement = function(nums, val) {
    for(let i = 0; i < nums.length; i++){
        if(nums[i] === val){
            nums.splice(i,1);
            i--;
        }
    }
    return nums.length;
};

 

이전 문제(Merge Sorted Array)에 비해 쉽게 풀 수 있었고, 처음에 생각한 접근 방식으로 한 번에 solve를 할 수 있었다.

 

다른 solve 코드

function removeElement(nums, val) {
  let count = 0;
  for (let i = 0; i < nums.length; i++) {
    if (nums[i] !== val) {
      nums[count++] = nums[i];
    }
  }
  return count;
}

위의 방법으로 splice를 사용 안 하고도 풀이가 가능하다.

count 변수를 생성해 nums 배열을 순회하며 val의 값과 일치하지 않는다면 해당 값을 넣어서 풀이가 가능하다.

Comments