해시·연습 문제

순서를 유지한 중복 제거

문제 설명PROBLEM

순서를 유지한 중복 제거

왜 이 문제를 푸나요?

집합의 빠른 존재 확인과 리스트의 순서 보존을 함께 사용하는 법을 익히기 위한 문제입니다. 자료구조 하나로 부족할 때 조합하는 사고를 연습합니다.

익혀야 할 개념

  • set 멤버십 검사
  • 첫 등장 순서
  • 보조 자료구조
  • 중복 제거

과제

정수 리스트에서 중복을 제거하되, 각 값이 처음 등장한 순서는 유지한 새 리스트를 반환하세요.

함수

unique_in_order(numbers)

목표 복잡도

평균 시간 O(n), 공간 O(k)

테스트 케이스

실행하면 아래 순서대로 채점합니다. print() 출력도 이 순서대로 쌓입니다.

#이름numbers기대값
1순서 유지[3, 1, 3, 2, 1, 4][3, 1, 2, 4]
2모두 같은 값[5, 5, 5][5]
3빈 리스트[][]
4중복 없는 입력[4, 2, 9][4, 2, 9]
5앞뒤 반복[1, 2, 1, 3, 2][1, 2, 3]

Python 표준 라이브러리는 사용할 수 있습니다. 함수 이름과 매개변수는 제시된 형태를 유지하세요.

개념 노트와 실수 포인트

해시 (dict / set)

  • 평균적으로 삽입·조회가 **O(1)**이라 개수 세기와 존재 여부 검사에 유용합니다.
  • dict.get(key, 0)set을 익혀두면 중첩 반복을 줄일 수 있습니다.