코딩테스트/Baekjoon
[백준 #10867] 중복 빼고 정렬하기 (C++)
동띵
2022. 2. 10. 18:18
https://www.acmicpc.net/problem/10867
10867번: 중복 빼고 정렬하기
첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다.
www.acmicpc.net
중복을 제거하는 것이 가장 중요한데, 이를 위해 unique()를 사용했다.
가장 먼저 수의 개수(n)를 입력받고
크기가 n인 벡터 v를 선언하여 for문을 통해 벡터에 숫자를 넣어주었다.
그다음 unique를 사용하기 위해 sort()로 벡터를 정렬해주고
erase와 unique를 사용하여 중복된 원소를 제거하고
벡터의 사이즈를 다시 설정해주었다.
**
unique 함수는 중복된 원소를 제거해주지만,
벡터에 사이즈까지 동적으로 줄여주지 않기 때문에
벡터의 빈 공간을 없애기 위해 erase를 사용한 것이다.
**
마지막으로 for문을 사용하여 벡터 안에 요소를 출력하면 된다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
for (auto i : v) {
cout << i << " ";
}
return 0;
}