function solution(orders, course) {
var answer = [];
const perm = (arr, index) => {
let result = [];
if(index === 1) return arr.map((v)=>[v]);
arr.forEach((v,index1, arr1)=>{
const target = v;
const arr2 = arr1.slice(index1+1);
const permArr = perm(arr2,index-1);
const combine = permArr.map((test)=> [target, ...test]);
result.push(...combine);
});
return result;
}
let obj = {};
orders.forEach((order)=>{
let arr = order.split("");
for(let i = 0; i < course.length ; i++){
let val = perm(arr,course[i]);
val.forEach((val1)=>{
val1.sort((a,b)=>{
if(a<b){
return -1;
}
else if(a>b){
return 1;
}
else{
return 0;
}
})
let val2 = val1.join("");
if(obj[val2]){
obj[val2]++;
}
else {
obj[val2] = 1;
}
});
}
});
let val3 = Object.entries(obj);
//console.log(val3)
val3 = val3.filter((a)=> a[1]>=2)
val3.sort((a,b)=>{
return b[1] - a[1]
})
//console.log(val3)
course.forEach((test)=>{
let test1 = val3.filter((val)=> val[0].length === test);
let test2 = test1.map((val)=>{
return val[1];
});
let max = Math.max(...test2);
test1.forEach((test4)=>{
if(test4[1] === max){
answer.push(test4[0]);
}
});
})
answer.sort((a,b)=>{
if(a<b){
return -1;
}
else if(a>b){
return 1;
}
else {
return 0;
}
});
return answer;
}
sort 메소드는 원래 배열의 순서를 변경함
기본 조합을 사용해서 구하는 예시, n의 값이 작은 것을 이용해서 구할 수 있는 부분!