반응형
1. 문제
- 배열 nums가 오름차순으로 정렬되어 주어질 때, 해당 배열을 수정하여 모든 요소 중 각각 1개 씩만 맨 앞에 정렬하고, 그 길이를 반환하라.
2. 풀이
function removeDuplicates(nums: number[]): number {
let compIndex = 0; // 비교 인덱스
let index = 0; // 배열 탐색 인덱스
let result = 1; // 총 길이
// 비교 인덱스가 배열의 마지막에 도달하기 전까지 반복.
while(compIndex < nums.length) {
if(nums[index] === nums[compIndex]) { // 현재 요소와 비교 요소가 같으면 인덱스 증가.
compIndex++;
continue;
}
// 현재 + 1 요소에 다른 고유 값을 가지는 요소를 넣어준다.
nums[++index] = nums[compIndex];
result++;
}
return result;
};
- 마찬가지로 투 포인터로 풀 수 있다.
- for문을 이용해보려고 했는데, 코드가 깔끔하지 않아서 while문을 쓰니까 깔끔히 정리됐다.