https://programmers.co.kr/learn/courses/30/lessons/64065
풀음~
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
vector<vector<int>> vvTemp;
vector<int> vTemp;
int flag(0);
string sTemp = "";
for (int i = 1; i < s.size() - 1; i++)//맨처음과 맨뒤는 뺀다.
{
if (s[i] == '{')
{
continue;
}
else if (s[i] == '}')
{
vTemp.push_back(stoi(sTemp));
sTemp = "";
vvTemp.push_back(vTemp);
vTemp.clear();
}
else if (s[i] >= '0' &&s[i] <= '9')
{
sTemp += s[i];
continue;
}
else if (s[i] == ',' && s[i - 1] != '}' && i >= 1)
{
vTemp.push_back(stoi(sTemp));
sTemp = "";
}
}
for (int i = 0; i < vvTemp.size(); i++)
{
sort(vvTemp[i].begin(), vvTemp[i].end(), [](int a, int b)
{
return a < b;
});
}
map<int, int> m_Con;
for (int i = 0; i < vvTemp.size(); i++)
{
for (int j = 0; j < vvTemp[i].size(); j++)
{
m_Con[vvTemp[i][j]]++;
}
}
map<int, int>::iterator m_itr;
vector<pair<int, int>> vpTemp;
for (m_itr = m_Con.begin(); m_itr != m_Con.end(); m_itr++)
{
vpTemp.push_back(make_pair(m_itr->first, m_itr->second));
}
sort(vpTemp.begin(), vpTemp.end(), [](pair<int, int> a, pair<int, int>b) {
return a.second > b.second;
});
for (int i = 0; i < vpTemp.size(); i++)
{
answer.push_back(vpTemp[i].first);
}
return answer;
}
int main()
{
string s1 = "{{1,2,3},{2,1},{1,2,4,3},{2}}";
vector<int> vTemp = solution(s1);
return 0;
}