Search

Search Form

Results

    No result!

Remove Duplicates From Sorted Array

December 25, 2024

문제 링크

해결 방법 1

function removeDuplicates(nums: number[]): number {
  let k = 1;

  for (let i = 1; i < nums.length; ++i) {
    if (nums[i] !== nums[i - 1]) {
      nums[k] = nums[i];
      ++k;
    }
  }

  return k;
}

다음 조건의 숫자 배열을 인자로 받는다.

1. 1 <= nums.length <= 3 \* 10^4
2. -100 <= nums[i] <= 100
3. nums is sorted in non-decreasing order.

해야할 일은

  1. 숫자 배열이 가진 요소 중에 중복되는 숫자의 개수를 반환하고
  2. 숫자 배열의 앞에 각 중복되는 숫자를 하나씩 오름차순 정렬로 넣어야 한다. 숫자배열 뒤에는 뭐가 오든 상관 없다.

먼저 중복되는 숫자의 개수를 담을 변수 k를 선언한다. for문을 돌 건데, 돌면서 현재 숫자 배열 요소 값이 이전 숫자 배열 요소 값과 다른 지 비교한다. 이 때문에 i는 0이 아닌 1부터 시작한다. 비교 값이 다르면 k값을 숫자 배열의 키 값으로 사용하여 숫자 배열 앞 쪽에 값을 추가한다. 그리고 k값을 1 증가시킨다. 마지막으로 k값을 반환한다.

처음에 인자로 받는 숫자 배열의 요소를 직접 변경해야 하는 건지 몰라서 좀 해맸다. 이런 유형은 처음이라...