Skip to content

Commit 564c3e7

Browse files
authored
[PGS] 72411 메뉴 리뉴얼 (Lv.2)
1 parent 45c7d7c commit 564c3e7

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

박예진/6주차/260205.cpp

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#include <string>
2+
#include <vector>
3+
#include <map>
4+
#include <algorithm>
5+
6+
using namespace std;
7+
8+
map<string, int> m;
9+
vector<int> v;
10+
11+
void combi(int n, int r, int depth, string str, int idx){
12+
if (depth == r) {
13+
string temp = "";
14+
for(auto i : v) {
15+
temp += str[i];
16+
}
17+
m[temp] += 1;
18+
return;
19+
}
20+
21+
for(int i = idx; i < n; i++){
22+
v.push_back(i);
23+
combi(n, r, depth + 1, str, i + 1);
24+
v.pop_back();
25+
}
26+
}
27+
28+
vector<string> solution(vector<string> orders, vector<int> course) {
29+
vector<string> answer;
30+
31+
// order 정렬
32+
for(int i = 0; i < orders.size(); i++){
33+
sort(orders[i].begin(), orders[i].end());
34+
}
35+
36+
vector<string> res;
37+
for(int i = 0; i < course.size(); i++){
38+
int r = course[i];
39+
40+
// order 안에서 조합
41+
for(int j = 0; j < orders.size(); j++){
42+
int n = orders[j].size();
43+
combi(n, r, 0, orders[j], 0);
44+
}
45+
46+
// 현재 메뉴 구성 개수에서 가장 value 큰 key
47+
int maxNum = 0;
48+
for(auto iter = m.begin(); iter != m.end(); iter++){
49+
string key = iter->first;
50+
int cnt = iter->second;
51+
if (cnt < 2) continue;
52+
53+
if (cnt > maxNum) {
54+
maxNum = cnt;
55+
res.clear();
56+
res.push_back(key);
57+
} else if (cnt == maxNum) {
58+
res.push_back(key);
59+
}
60+
}
61+
62+
// res 만큼 answer
63+
for(auto r : res){
64+
answer.push_back(r);
65+
}
66+
67+
m.clear();
68+
}
69+
70+
sort(answer.begin(), answer.end());
71+
// 중복제거
72+
answer.erase(unique(answer.begin(), answer.end()), answer.end());
73+
74+
return answer;
75+
}

0 commit comments

Comments
 (0)