문제 10: 중복 제거

발행: (2026년 1월 20일 오후 03:56 GMT+9)
2 분 소요
원문: 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]

설명

  1. 초기화

    • seen = set() – 이미 마주친 요소들을 저장합니다.
    • result = [] – 중복이 제거된 최종 리스트를 담을 변수입니다.
  2. 입력 리스트를 순회

    for i in lst:
    • iseen에 없으면 처음 등장한 것이므로:
      • seen에 추가합니다: seen.add(i).
      • result에 추가합니다: result.append(i).
    • i가 이미 seen에 있으면 건너뜁니다.
  3. 이제 result 리스트를 반환하면, 각 고유 요소가 처음 등장한 순서대로 들어 있게 됩니다.

예시 [1, 2, 2, 3, 1, 4]에 대한 단계별 진행

단계요소 i수행 동작seenresult
11seen에 없으므로 추가 및 result에 삽입{1}[1]
22seen에 없으므로 추가 및 result에 삽입{1, 2}[1, 2]
32이미 seen에 존재 → 건너뜀{1, 2}[1, 2]
43seen에 없으므로 추가 및 result에 삽입{1, 2, 3}[1, 2, 3]
51이미 seen에 존재 → 건너뜀{1, 2, 3}[1, 2, 3]
64seen에 없으므로 추가 및 result에 삽입{1, 2, 3, 4}[1, 2, 3, 4]

최종 결과: [1, 2, 3, 4].

Back to Blog

관련 글

더 보기 »

Python 클로저: JavaScript에서 온 경우

책과 비디오를 통한 학습 > “Books – 주제에 대한 깊이 있는 지식 습득 > Videos – 특정 technology를 빠르게 익히기” 나는 여전히 책을 집어 든다.