👍🏻 2022년 2월 2일
<script>
const getCombinations = (arr, n) => {
const results = [];
if (n === 1) return arr.map((v) => [v]);
arr.forEach((fix, i, origin) => {
const rest = origin.slice(i + 1);
const combinations = getCombinations(rest, n-1);
const attached = combinations.map((v) => [fix, ...v])
results.push(...attached);
});
return results;
}
function solution(orders, course) {
var answer = [];
let result = [];
orders.sort();
course.forEach((val) => {
orders.forEach((v,i) => {
v = v.split("").sort().join("");
let combinationStr;
if (v.length >= val) {
let ordersArr = v.split("");
let combination = getCombinations(ordersArr, val);
combination.forEach((combi) => {
let totalCnt = 0;
orders.forEach((order) => {
let cnt = 0;
combi.forEach((str) => {
if (order.includes(str)) cnt++
})
if (cnt === combi.length) totalCnt++;
})
if (totalCnt >= 2) {
combi = combi.join("");
result.push(combi)
}
})
}
})
})
let countObj = {};
result.forEach((v,i) => {
let count = result.filter(ele => v === ele).length;
countObj[v] = count;
})
course.forEach((val) => {
let obj = {}
let keys = Object.keys(countObj).filter(ele => val === ele.length);
if (keys.length !== 0) {
keys.forEach((v,i) => {
obj[v] = countObj[v];
})
let maxCnt = Math.max(...Object.values(obj));
for (let [key, value] of Object.entries(obj)) {
if (value === maxCnt) {
answer.push(key)
}
}
}
})
return answer.sort();
}
</script>
푸는데 1시간 40분 걸렸다...^^ 포인트 겨우 5점 주는거 보고 현타왔다