코딩 테스트 대비! 파이썬으로 "배열 중복 제거" 문제 풀이
파이썬으로 "배열 중복 제거" 문제 풀이
문제 설명
정수 배열 nums가 주어졌을 때, 중복된 숫자를 제거하고 정렬된 배열을 반환하는 프로그램을 작성하세요.
제약 조건
- 1 <= nums.length <= 3 * 104
- -106 <= nums[i] <= 106
- nums는 정렬되어 있지 않을 수 있습니다.
예시 입출력
- nums = [1,1,2] -> [1,2]
- nums = [0,0,1,1,1,2,2,3,3,4] -> [0,1,2,3,4]
솔루션 코드
def remove_duplicates(nums):
if not nums:
return []
result = []
prev = None
for n in nums:
if n != prev:
result.append(n)
prev = n
return result
# 테스트
print(remove_duplicates([1,1,2])) # [1, 2]
print(remove_duplicates([0,0,1,1,1,2,2,3,3,4])) # [0, 1, 2, 3, 4]
코드 설명
1. 입력 배열이 비어있으면 빈 리스트를 반환합니다.
2. 결과를 저장할 result 리스트와 이전 원소를 추적할 prev 변수를 초기화합니다.
3. nums를 순회하며 현재 원소가 이전 원소와 다르면 result에 추가하고, prev를 현재 원소로 업데이트합니다.
4. 반복이 끝나면 중복이 제거된 result 리스트를 반환합니다.
이 풀이의 시간 복잡도는 O(n)이며, 공간 복잡도는 O(n)입니다. 여기서 n은 nums의 길이입니다.
이 문제에서는 배열에서 중복된 원소를 제거하는 방법을 다룹니다. 정렬되지 않은 배열에 대해 간단한 반복문을 통해 중복 제거를 수행할 수 있습니다. 이전 원소와 현재 원소를 비교하여 다르면 결과 리스트에 추가하는 방식입니다.
이러한 유형의 문제는 배열 조작 연습에 좋으며, 실제 프로그래밍에서도 자주 활용됩니다. 예를 들어 중복된 데이터를 처리하거나, 고유한 값만 추출해야 할 때 유용합니다. 또한 코딩 인터뷰에서도 자주 출제되므로 익숙해질 필요가 있습니다.