C++ vector 중복 제거

YUNU·2024년 1월 10일

알고리즘

목록 보기
4/15
post-thumbnail

🤖 Algorithm


🟦 C++ vector 중복 제거

vector의 중복 제거는 algorithm 라이브러리를 활용하여 수행

  1. sort를 사용하여 벡터 정렬
  2. unique를 사용하여 중복되는 값들을 벡터의 뒤로 이동
  3. erase를 사용하여 중복되는 값들 제거

🟦 예시 - BOJ 백준 25192번

2차원 벡터를 만들어 문제를 풀었다.

ENTER를 만나면 열을 하나 이동하여 입력된 값들을 저장하였고

입력 값들을 저장한 후에 중복을 제거하고 각 열의 사이즈들을 더해 값을 구했다.

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
    int N;
    scanf("%d",&N);

    vector<vector<string>> chat(N);

    int floor=-1;

    for(int i=0;i<N;i++)
    {
        string chatting;
        cin>>chatting;
        if(chatting=="ENTER")
        {
            floor++;
        }
        
        else
        {
            chat[floor].push_back(chatting);
        }
    }

    int res=0;

// 중복 제거 부분
    for(int i=0;i<=floor;i++)
    {
        sort(chat[i].begin(),chat[i].end());
        auto dupl = unique(chat[i].begin(), chat[i].end());
        chat[i].erase(dupl, chat[i].end());
        res+=chat[i].size();
    }

    printf("%d",res);

    return 0;
}
profile
DDeo99

0개의 댓글