LeetCode 80: 정렬된 배열의 중복을 두 개까지 남기기
중복 횟수를 먼저 셉니다

정렬된 배열에서 같은 값을 최대 두 개까지 남기는 문제입니다. 한 개만 남겼던 풀이와 마찬가지로 순서를 유지하면서 원래 배열을 수정합니다.
첫 번째 값은 그대로 두고 인덱스 1부터 확인했습니다. 바로 앞의 값과 같으면 sameCount를 늘리고 다르면 0으로 되돌린 뒤, sameCount < 2인 값만 pos 위치에 저장합니다.
여기서 sameCount는 해당 값의 전체 등장 횟수가 아니라 첫 등장 이후의 반복 횟수입니다. 첫 값은 0, 두 번째는 1, 세 번째는 2가 되므로 두 번째까지만 남습니다. pos는 다음에 저장할 위치이면서 지금까지 남긴 값의 개수입니다.
코드
class Solution {
public int removeDuplicates(int[] nums) {
// 시작위치는 1
int pos = 1;
// 중복 횟수를 체크할 변수
int sameCount = 0;
for(int i = 1; i < nums.length; i++){
// 만약 중복 된 수라면 sameCount 1 증가
if(nums[i - 1] == nums[i]) sameCount++;
// 중복되지 않은 수라면 sameCount 초기화
else sameCount = 0;
// 앞서 계산한 sameCount에 따라 배열 요소 변경
if(sameCount < 2) nums[pos++] = nums[i];
}
// 마지막에 수정된 위치 까지가 유효한 배열 요소
return pos;
}
}