문제 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]

설명

  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

관련 글

더 보기 »

LeetCode DSA 시리즈 #6: 268. Missing Number

문제 개요: 이 작업은 LeetCode 문제 268, Missing Number입니다 – 0부터 n까지의 범위에서 추출된 n개의 서로 다른 숫자를 포함하는 배열 nums가 주어질 때, 하나의 누락된 숫자를 찾는 문제입니다.

100일 DSA 코딩 챌린지의 82일

문제: 2D Matrix에서 Peak Element 찾기 GeeksforGeeks 문제 링크: https://www.geeksforgeeks.org/problems/find-the-peak-element-in-a-2d-matrix/1 난이도…