10867 중복 빼고 정렬하기
-> 중복 빼고 오름차순으로 정렬하면 되는 문제
⤵️ 틀린 답안
(1) 배열[100001] 을 0으로 설정
(2) 입력 받는 숫자를 인덱스로 설정 -> 해당 인덱스의 값 +1;
(3) 1이상의 값을 가지고 있는 인덱스 출력
=> 예시는 잘 나오는데 말이쥬,,
#include <iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
int arr[100001]={0};
for(int i=0;i<n;i++){
int num;
cin>>num;
arr[num]+=1;
}
for(int i=0;i<100001;i++){
if(arr[i]>=1){
cout<<i<<" ";
}
}
}
✅ 통과한 답안
vector의 erase와 unique를 사용
unique - 중복된 값들을 모두 뒤로 보냄. unique가 끝난 후 반환되는 값은 중복된 값의 첫번째 위치.
erase - 중복된 값의 첫번째 위치부터 마지막 위치까지 지워준다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
vector<int> vec(n);
for(int i=0;i<n;i++){
cin>>vec[i];
}
sort(vec.begin(),vec.end());
vec.erase(unique(vec.begin(),vec.end()),vec.end());
for(auto num : vec){
cout<<num<<" ";
}
return 0;
}