쉬움 0명 해결 정답률 0%

중복 제거

각 값의 첫 번째 등장만 남기세요.

배우게 될 내용

  • 집합으로 이미 본 값 추적하기
  • 각 값의 첫 등장만 남기기
  • 원래 순서 유지하기

문제

원문 보기 (영어)

중복된 값을 제거하고, 각 값의 첫 번째 등장만 원래 순서를 유지하여 리스트로 반환하세요.

remove_duplicates(numbers)를 구현하세요.

입력

numbers: 정수로 이루어진 리스트입니다.

출력

중복이 제거된 리스트를 반환하세요.

제약 조건

0 ≤ 길이 ≤ 100,000

예시

예시 1
입력:
numbers = [3, 1, 3, 2, 1]

예상 출력:
expected = [3, 1, 2]
입력:
std::vector<long long> numbers = {3, 1, 3, 2, 1};

예상 출력:
std::vector<long long> expected = {3, 1, 2};
입력:
long[] numbers = new long[] {3, 1, 3, 2, 1};

예상 출력:
long[] expected = new long[] {3, 1, 2};

설명

3, 1, 2만 남기고, 이후에 나오는 3과 1은 제거됩니다: [3, 1, 2].

예시 2
입력:
numbers = [7, 7, 7]

예상 출력:
expected = [7]
입력:
std::vector<long long> numbers = {7, 7, 7};

예상 출력:
std::vector<long long> expected = {7};
입력:
long[] numbers = new long[] {7, 7, 7};

예상 출력:
long[] expected = new long[] {7};

설명

첫 번째 7만 남습니다: [7].

접근 방법

먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.

힌트 1

각 값이 처음 등장한 것만 남기고, 이후 반복은 무시하세요.

힌트 2

set 같은 조회 구조를 쓰면 이미 본 값인지 빠르게 판단할 수 있습니다.

힌트 3

정렬 순서가 아니라, 첫 등장 순서를 그대로 유지하세요.

예상 복잡도

시간 O(n), 추가 공간 O(n)

참고 자료

이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.