문제
중복된 값을 제거하고, 각 값의 첫 번째 등장만 원래 순서를 유지하여 리스트로 반환하세요.
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에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.