https://programmers.co.kr/learn/courses/30/lessons/72411
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
map<string, int> m;
int sz;
bool cmp(pair<string, int> a, pair<string, int> b) {
return a.second > b.second;
}
void find_menu(int count, string str, int index, string tmp) {
if (count < sz) {
for (; index <str.size(); index++) {
find_menu(count + 1, str, index+1, tmp + str[index]);
}
}
else if (count == sz) {
m[tmp] += 1;
}
}
vector<string> solution(vector<string> orders, vector<int> course) {
vector<string> answer;
for (int i = 0; i<course.size(); i++) {
m.clear();
sz = course[i];
for (int j = 0; j<orders.size(); j++) {
sort(orders[j].begin(), orders[j].end());
find_menu(0, orders[j], 0, "");
}
vector<pair<string, int>> v(m.begin(), m.end());
sort(v.begin(), v.end(), cmp);
if (!v.empty()) {
int biggest = v[0].second;
if (biggest >= 2) {
for (int j = 0; j<v.size(); j++) {
if (v[j].second == biggest)
answer.push_back(v[j].first);
}
}
}
}
sort(answer.begin(), answer.end());
return answer;
}
'프로그래머스' 카테고리의 다른 글
광고 삽입 C++ (0) | 2021.07.07 |
---|---|
순위 검색 C++ (0) | 2021.07.01 |
신규 아이디 C++ (0) | 2021.06.28 |
가장 먼 노드 C++ (0) | 2021.04.22 |
기둥과 보 설치 C++ (0) | 2020.11.09 |