## 문제
[Remove Duplicates from Sorted Array II - LeetCode](https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii)
## 코드
```typescript
// insertPos : 왼쪽에서 유니크한 숫자들을 모으는 포인터
// readPos : 오른쪽에서 숫자들을 탐색하는 포인터
function removeDuplicates(nums: number[]): number {
if (nums.length <= 2) {
// 길이가 2 이하이면 항상 유효하므로 배열 길이를 반환
return nums.length;
}
let insertPos = 2; // 처음 두 개의 원소는 항상 유효하기 떄문에 새 값을 삽입할 위치는 인덱스 2부터
for (let readPos = 2; readPos < nums.length; readPos++) {
// 현재 읽고 있는 값이 결과 배열의 마지막 두 값 중 첫 번째 값과 다르다면
// 지금까지 같은 숫자가 2번 이상 연속되지 않았다는 뜻 -> 유효한 숫자이므로 수집
if (nums[readPos] !== nums[insertPos - 2]) {
nums[insertPos] = nums[readPos];
insertPos++;
}
// 유효하지 않다면 아무것도 하지 않고 넘어감
}
return insertPos; // 고유한 숫자들의 개수
};
```
## 참고
[[Two Pointers]]