본문 바로가기
Algorithm/Leetcode

LeetCode - Remove Duplicates from Sorted Array

by du.it.ddu 2020. 8. 2.
반응형

문제 링크 : https://leetcode.com/problems/remove-duplicates-from-sorted-array/

난이도 : Easy


문제 풀이 :

배열안에 존재하는 중복되는 숫자들을 단 한개씩만 남도록 하는 것이 문제의 핵심이다.

정답을 위한 조건으로는 중복을 제거한 숫자들의 갯수가 몇개인지를 반환하고 nums 배열에 순서대로 재정렬 해야한다.

중복을 제거한 숫자들의 갯수는 Set을 이용하여 간단하게 구할 수 있었다.

문제는 nums 배열의 값을 재정렬 해 주는 것이었는데, 이것도 사실 생각해보니 간단했다.

현재 중복되어 변경할 인덱스를 하나 만든다.

그리고 루프를 돌며 numSet에 존재하지 않는 숫자면 numSet에 넣고 nums 배열의 인덱스 위치의 값을 변경해준 후 인덱스를 증가시킨다.


소스 코드 :

class RemoveDuplicatesFromSortedArray {
    fun removeDuplicates(nums: IntArray): Int {
        val numSet = mutableSetOf<Int>()
        var duplicatedNumIndex = 0

        for(i in nums.indices) {
            val num = nums[i]

            if(!numSet.contains(num)) {
                numSet.add(num)
                nums[duplicatedNumIndex] = nums[i]
                duplicatedNumIndex += 1
            }
        }
        return numSet.size
    }
}

후기 : 

항상 느끼는 것이지만 문제를 풀고 난 후 다른 사람의 코드를 보면 배우는게 많은 것 같다.

Set을 사용하지 않아도 충분히 풀 수 있었음에도 불구하고 굳이 자료구조를 하나 사용해서 풀게 되었다.

어찌보면 자료구조의 특성에 따라 활용할 수 있는 능력이 있는 것이지만.. 불필요한 상황에서 쓰는 것은 생각이 부족하지 않았나 싶다.

반응형

'Algorithm > Leetcode' 카테고리의 다른 글

LeetCode - Merge Two Sorted Lists  (0) 2020.07.30
LeetCode - Valid Parentheses  (0) 2020.06.27
LeetCode - Longest Common Prefix  (0) 2020.06.27
LeetCode - Roman to Integer  (0) 2020.06.27
LeetCode - Reverse Integer  (0) 2020.06.27