본문 바로가기
프로그래밍 언어(Programming Languages)/LeetCode

[코딩 인터뷰] LeetCode - Array/String - 26. Remove Duplicates from Sorted Array

by 데이터 벌집 2023. 12. 27.

안녕하세요, 코딩 열정 가득한 여러분! 🚀 오늘은 LeetCode의 매력적인 문제 '26. Remove Duplicates from Sorted Array'를 함께 풀어볼 시간이에요. 🎉 이 문제는 정렬된 배열에서 중복을 제거하는 방법을 배울 수 있는 완벽한 기회랍니다. 배열을 다루는 기초부터 효율적인 알고리즘까지, 모두 이번 문제에서 만날 수 있어요. 🤖💡 준비되셨나요? 코드와 함께 문제를 해결해봅시다!

26. Remove Duplicates from Sorted Array


🎯 문제 설명

이 문제는 비감소 순서로 정렬된 정수 배열 nums에서 중복을 제거하는 것입니다. 😲 중요한 것은, 이 작업을 "제자리"에서 수행하고, 각 고유 요소가 한 번씩만 나타나야 한다는 거예요. 또한, 고유 요소의 수 k를 반환해야 합니다.

 

문제보기


알아야 할 개념 공부하기 📘

  • 투 포인터 기법: 중복 없이 배열을 효율적으로 순회하는 방법입니다. 🚶‍♂️🚶‍♀️
  • 제자리 알고리즘: 추가적인 메모리 공간을 사용하지 않고, 주어진 배열 내에서 문제를 해결하는 방식이죠. 👍

문제 풀어보기 🔍

 

class Solution:
    def removeDuplicates(self, nums):
        # 빈 배열의 경우, 0을 반환
        if not nums:
            return 0

        # write_index는 중복되지 않은 요소를 기록할 위치를 나타냅니다. 
        # 첫 번째 요소는 항상 고유하므로 1부터 시작합니다.
        write_index = 1

        # 배열의 두 번째 요소부터 순회 시작
        for i in range(1, len(nums)):
            # 현재 요소와 write_index - 1의 요소를 비교합니다.
            # 만약 다른 요소라면 새로운 고유 요소가 발견된 것입니다.
            if nums[i] != nums[write_index - 1]:
                # 현재 요소를 write_index 위치에 기록합니다.
                nums[write_index] = nums[i]
                # write_index를 증가시켜 다음 고유 요소를 기록할 위치를 업데이트합니다.
                write_index += 1

        # write_index는 배열 내 고유 요소의 총 개수를 나타냅니다.
        return write_index

 

  1. 빈 배열 확인:
    • 먼저, 주어진 배열 nums가 비어 있는지 확인합니다. 만약 배열이 비어 있다면, 고유 요소의 개수는 0이므로 즉시 0을 반환합니다.
  2. 초기 인덱스 설정:
    • write_index 변수를 1로 초기화합니다. 이 변수는 배열 내에서 고유 요소를 기록할 위치를 추적합니다. 첫 번째 요소는 이미 고유하다고 가정하므로, write_index는 두 번째 요소부터 시작합니다.
  3. 배열 순회 및 중복 확인:
    • 배열의 두 번째 요소부터 시작하여 끝까지 순회합니다.
    • 각 요소를 이전에 기록된 고유 요소(nums[write_index - 1])와 비교합니다.
    • 만약 현재 요소가 이전 고유 요소와 다르다면, 새로운 고유 요소를 발견한 것이므로 다음 단계로 진행합니다.
  4. 고유 요소 기록 및 인덱스 업데이트:
    • 새로운 고유 요소를 write_index의 위치에 기록합니다.
    • write_index를 1 증가시켜 다음 고유 요소를 기록할 위치를 준비합니다.
  5. 결과 반환:
    • 모든 요소의 순회가 끝나면, write_index는 배열 내 고유 요소의 총 개수를 나타내므로 이 값을 반환합니다.

 


'26. Remove Duplicates from Sorted Array' 문제를 풀어보며, 배열 내 중복 요소를 효율적으로 제거하는 방법을 배웠습니다. 🎓 이 기술은 배열을 다루는 다양한 문제에서 유용하게 활용될 수 있어요. 여러분도 이 문제를 통해 코딩 실력을 더욱 강화시켜 보세요! 💪 다음 도전을 기다리며, 즐거운 코딩 시간 되세요! 🌟👨‍💻👩‍💻🌟