리스트의 중복 원소를 제거해주는 문제이다.
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
nums = set(nums)
nums = list(nums)
파이썬은 위와 같이 set으로 옮겨 담으면 중복을 제거할 수 있지만 LeetCode는 기존의 저런식으로 nums를 재선언하는 것을 답으로 허용하지 않는 것 같다. 그래서 중복을 일일히 찾아서 제거해줬다.
for 문으로 리스트를 탐색한다.
인덱스의 원소가 인덱스 이전까지의 원소들이 포함된 리스트 안에 존재하는지 확인한다.
존재한다면 중복된 원소이므로, 제거해준다.
이 과정을 for 문이 끝날 때까지 반복한다.
※ 주의 할 점은 해당 원소를 제거하면 이후의 원소들이 당겨져서 빈자리를 채우기 때문에 제거하고 나서는 인덱스 값을 증가시키면 안되고, 다시 현재의 인덱스 값을 확인해야 한다.
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
cnt = 1
for i in range(1, len(nums)): ## 1. for 문으로 리스트를 탐색한다.
if nums[cnt] in nums[:cnt]: ## 2. 인덱스의 원소가 인덱스 이전까지의 원소들이 포함된 리스트 안에 존재하는지 확인한다.
del nums[cnt] ## 3. 존재한다면 중복된 원소이므로, 제거해준다.
cnt -=1
cnt += 1