반응형
안녕하세요, 코딩 열정 가득한 여러분! 🚀 오늘은 LeetCode의 매력적인 문제 '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
- 빈 배열 확인:
- 먼저, 주어진 배열 nums가 비어 있는지 확인합니다. 만약 배열이 비어 있다면, 고유 요소의 개수는 0이므로 즉시 0을 반환합니다.
- 초기 인덱스 설정:
- write_index 변수를 1로 초기화합니다. 이 변수는 배열 내에서 고유 요소를 기록할 위치를 추적합니다. 첫 번째 요소는 이미 고유하다고 가정하므로, write_index는 두 번째 요소부터 시작합니다.
- 배열 순회 및 중복 확인:
- 배열의 두 번째 요소부터 시작하여 끝까지 순회합니다.
- 각 요소를 이전에 기록된 고유 요소(nums[write_index - 1])와 비교합니다.
- 만약 현재 요소가 이전 고유 요소와 다르다면, 새로운 고유 요소를 발견한 것이므로 다음 단계로 진행합니다.
- 고유 요소 기록 및 인덱스 업데이트:
- 새로운 고유 요소를 write_index의 위치에 기록합니다.
- write_index를 1 증가시켜 다음 고유 요소를 기록할 위치를 준비합니다.
- 결과 반환:
- 모든 요소의 순회가 끝나면, write_index는 배열 내 고유 요소의 총 개수를 나타내므로 이 값을 반환합니다.
'26. Remove Duplicates from Sorted Array' 문제를 풀어보며, 배열 내 중복 요소를 효율적으로 제거하는 방법을 배웠습니다. 🎓 이 기술은 배열을 다루는 다양한 문제에서 유용하게 활용될 수 있어요. 여러분도 이 문제를 통해 코딩 실력을 더욱 강화시켜 보세요! 💪 다음 도전을 기다리며, 즐거운 코딩 시간 되세요! 🌟👨💻👩💻🌟
반응형
'프로그래밍 언어(Programming Languages) > LeetCode' 카테고리의 다른 글
[코딩 인터뷰] LeetCode - 392. Is Subsequence 문자열 문제 정복 (73) | 2024.01.02 |
---|---|
[코딩 인터뷰] LeetCode - Two Pointers - 125. Valid Palindrome (66) | 2024.01.01 |
[코딩 인터뷰] LeetCode - Array/Strings - 169. Majority Element (82) | 2023.12.28 |
[코딩 인터뷰] LeetCode - Array / String - 27. Remove Element (82) | 2023.12.26 |
[코딩인터뷰] Leetcode - Array/String - 88. Merge Sorted Array (83) | 2023.12.25 |