알고리즘 공부

[leetcode - 80. Remove Duplicates from Sorted Array II] java

철매존 2025. 1. 26. 16:25
728x90
반응형

문제 설명

1. 배열이 주어진다.

2. 중복을 제거한다.

3. 근데 한번의 중복까지는 허용한다.

풀이 과정

1. 그냥 하나씩 더해가면서 구하면 된다.

2. 한번의 중복은 허용하기 때문에 한번 허용했다는 flag를 만들고 활용하면 된다.

3. 시작할 때에 index 에 대한 flag는 아직 없기 때문에 이에 대한 방어로직을 처음에 작성해주면 된다.

코드

class Solution {
    public int removeDuplicates(int[] nums) {
    	// index 확인
        int index = 0;
        boolean canDup = true; // 중복 추가 허용 여부. 처음 인덱스에 대해서는 중복 추가 가능 true
        
        // 처음꺼는 이미 들어가니까 1부터 시작
        for(int i=1; i<nums.length; i++) {
        	// 중복되지 않았으면
            if(nums[index] != nums[i]) {
                nums[++index] = nums[i]; // 지금 값을 넣어줌
                canDup = true; // 중복 한번은 허용해준다.
            } else if(canDup) { // 중복 한번 추가 가능한 경우
                canDup = false;
                nums[++index] = nums[i];
            }
        }
        return index+1; // 모든 넣어준 값들을 확인하기 위한 전체 크기 확정
    }
}
반응형