10867 중복 빼고 정렬하기 C++

ay.zip·2022년 3월 5일
0

문제풀이

목록 보기
10/18

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;
}

0개의 댓글