80. Remove Duplicates from Sorted Array II
2025-07-30
LeetCode 80번 풀이
이 글은 Obsidian에서 마이그레이션되었으며, 그 과정에서 AI의 도움을 받았습니다. 오류나 누락된 내용이 있다면 댓글로 알려주세요!
문제
Remove Duplicates from Sorted Array II - LeetCode
풀이
코드
// 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; // 고유한 숫자들의 개수
};