종류만 구하면 되는데, 너무 어렵게 생각했다.
function solution(nums) {
let tmp = Array.from({length:parseInt((nums.length)/2)});
let ans = [];
let answer = 0;
function Max (L, idx) {
if (L===nums.length/2) {
console.log(tmp.slice());
// let tmp2 = tmp.slice().sort((a,b)=>a-b);
// if (!ans.includes(tmp2)) {
// ans.push(tmp2);
// }
// console.log(tmp2);
// if (ans[tmp2]) ans[tmp2]++;
// else ans[tmp2]=1;
}
else {
for (let i=idx; i<nums.length; i++) {
tmp[L] = nums[i];
idx = i+1;
Max(L+1, idx);
tmp.pop();
}
}
}
Max(0, 0);
console.log(ans);
// for (let [key, val] of Object.entries(ans)) {
// if (answer < val) {
// answer = val;
// }
// }
// return answer;
}
// console.log(solution([3, 1, 2, 3]));
console.log(solution([3, 3, 3, 2, 2, 4]));
그냥 간단하게 틀에 들어갈 수 있는 개수보다 종류가 더 많으면 그냥 틀 개수가 최종값이고, 틀에 들어갈 수 있는 개수보다 종류가 더 적다? 그러면 종류의 개수가 최종값인 간단한 문제.
function solution(nums) {
let max1 = 0;
max1 = nums.length/2;
let max2 = 0;
max2 = [...new Set(nums)].length;
if (max1 < max2) {
return max1;
} else return max2;
}
// console.log(solution([3, 1, 2, 3]));
console.log(solution([3, 3, 3, 2, 2, 4]));