문제 10: 중복 제거
발행: (2026년 1월 20일 오후 03:56 GMT+9)
2 min read
원문: Dev.to
Source: Dev.to
문제 설명
리스트에서 중복을 제거하되 원래 요소들의 순서는 유지하는 함수를 작성합니다.
예시
remove_duplicates([1, 2, 2, 3, 1, 4])는 [1, 2, 3, 4]를 반환해야 합니다.
해결 방법
def remove_duplicates(lst):
"""
Removes duplicates from a list while maintaining order.
"""
seen = set()
result = []
for i in lst:
if i not in seen:
seen.add(i)
result.append(i)
return result
# Test case
print(remove_duplicates([1, 2, 2, 3, 1, 4]))
# Output: [1, 2, 3, 4]
설명
-
초기화
seen = set()– 이미 마주친 요소들을 저장합니다.result = []– 중복이 제거된 최종 리스트를 담을 변수입니다.
-
입력 리스트를 순회
for i in lst:i가seen에 없으면 처음 등장한 것이므로:seen에 추가합니다:seen.add(i).result에 추가합니다:result.append(i).
i가 이미seen에 있으면 건너뜁니다.
-
이제
result리스트를 반환하면, 각 고유 요소가 처음 등장한 순서대로 들어 있게 됩니다.
예시 [1, 2, 2, 3, 1, 4]에 대한 단계별 진행
| 단계 | 요소 i | 수행 동작 | seen | result |
|---|---|---|---|---|
| 1 | 1 | seen에 없으므로 추가 및 result에 삽입 | {1} | [1] |
| 2 | 2 | seen에 없으므로 추가 및 result에 삽입 | {1, 2} | [1, 2] |
| 3 | 2 | 이미 seen에 존재 → 건너뜀 | {1, 2} | [1, 2] |
| 4 | 3 | seen에 없으므로 추가 및 result에 삽입 | {1, 2, 3} | [1, 2, 3] |
| 5 | 1 | 이미 seen에 존재 → 건너뜀 | {1, 2, 3} | [1, 2, 3] |
| 6 | 4 | seen에 없으므로 추가 및 result에 삽입 | {1, 2, 3, 4} | [1, 2, 3, 4] |
최종 결과: [1, 2, 3, 4].