[BOJ][C++] 백준 10867번 중복 빼고 정렬하기

Updated:

10867번 중복 빼고 정렬하기

1. 문제 정보

백준 온라인 저지 [10867번 중복 빼고 정렬하기] 문제의 링크입니다.

문제

N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다.

입력

첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다.

출력

첫째 줄에 수를 오름차순으로 정렬한 결과를 출력한다. 이때, 같은 수는 한 번만 출력한다.

예제 입력1

10
1 4 2 3 1 4 2 3 1 2

예제 출력1

1 2 3 4

시간 / 메모리 제한

1초 / 256MB


2. 생각

  1. 중복이 있는 수열을 중복을 제거하고 오름차순으로 정렬하여 출력하는 문제입니다.

  2. 중복을 제거하고, 오름차순으로 정렬의 두 가지 키워드를 모두 만족하는 STL이 바로 set 입니다.

  3. set은 값을 삽입할 때 중복을 체크합니다. 여러번 같은 값을 삽입해도 한 번만 삽입이 됩니다.

  4. 중복 체크(검색)를 빠르게 하기 위해 set은 이진트리 구조로 정렬되어 저장됩니다. 별도로 sort() 함수를 쓸 필요가 없습니다.

3. 소스코드 (C++)


터미널의 입출력 화면 예제1

10867_1

터미널의 입출력 화면 다른 예제

10867_2 10867_3