본문 바로가기

백준/C++

[BaeKJoon/C++] 백준 10867 c++ 중복 빼고 정렬하기

반응형

https://www.acmicpc.net/problem/10867

 

10867번: 중복 빼고 정렬하기

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

www.acmicpc.net

 

문제

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

풀이

중복을 없애기 위해서는 unique함수가 필요하다.

코드

#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
 
using namespace std;
 
int main() {
 
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
 
    int test;
    cin>>test;
 
    vector<int> vec;
 
    for(int i=0; i<test; i++){
        int n;
        cin>>n;
        vec.push_back(n);
    }
 
    sort(vec.begin(), vec.end());
 
    vector<int>::iterator iter;
    vector<int>::iterator end_iter;
 
    end_iter=unique(vec.begin(), vec.end());
 
    for(iter=vec.begin(); iter!=end_iter; iter++){
        cout<<*iter<<" ";
    }
    return 0;
}
 
// 중복 빼고 정렬하기
 
cs

 

반응형