vector의 중복 제거는 algorithm 라이브러리를 활용하여 수행
sort를 사용하여 벡터 정렬unique를 사용하여 중복되는 값들을 벡터의 뒤로 이동erase를 사용하여 중복되는 값들 제거
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;
}