2022년 2월 06일 토요일 - 오늘은 데이트~~


오늘 올려볼 문제는 80번 Remove Duplicates from Sorted Array II 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진
leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

오늘은 데이트 때문에 밖에서 폰으로 문제를 풀었다 ㅋㅋㅋㅋ


입력


사진에서도 볼 수 있듯이 정렬된 int 배열이 주어진다.



풀이 및 코드


정렬된 int 배열 중 중복되는 원소가 최대 2개까지 되게끔 배열을 수정하고 수정한 후 배열의 길이를 리턴하는 문제이다.


오늘은 처음부터 정답을 생각해냈다.

전 값을 저장하는 변수와 그 값의 개수를 저장하는 변수를 만든다.

또한 배열을 수정할 위치를 index를 저장하는 변수도 만든다.

값의 개수가 2개 초과일 때는 index 값을 올리지 않는 식으로 구현했다.

이런식으로 시간복잡도 O(N)에 풀 수 있는 방법을 생각해냈다.


이제 코드를 봐보자!


풀이코드

class Solution {
    public int removeDuplicates(int[] nums) {
        // pre는 전 값을 저장하는 변수, count는 pre의 개수 저장하는 변수, index는 새로 수정할 배열의 인덱스를 저장하는 변수
        int pre = -100000, count = 0, index = 0;

        for(int i = 0; i < nums.length; i++)
        {
            // 만약 새로운 값이 나온다면
            if(pre != nums[i])
            {
                pre = nums[i];
                count = 0;
                // 수정될 배열에 업데이트 한다.
                nums[index++] = nums[i];
            }
            // 만약 중복되는 값이 나온다면
            else
                // 중복되는 값의 개수가 2개가 이하라면
                if(count < 2)
                    // 수정될 배열에 업데이트 한다.
                    nums[index++] = nums[i];

            count++;
        }

        return index;
    }
}



제출 화면

leetcode 문제 맞았습니다


오늘은 어렵지 않게 풀었던 문제였다.

다만 핸드폰으로 문제를 푼 건 처음이라서 생각보다는 어려웠다. ㅋㅋㅋㅋ


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

+ Recent posts