function solution(n, f) {
let answer;
let flag = false;
let c_table = Array(n).fill(Array(n).fill(0));
let c_list = Array(n).fill(0);
let p_check = Array(n + 1).fill(0);
let p_list = Array(n).fill(0);
function comb(n, r) {
if (c_table[n][r]) return c_table[n][r];
if (n === r || r === 0) return 1;
return (c_table[n][r] = comb(n - 1, r - 1) + comb(n - 1, r));
}
function permutation(k, sum) {
if (flag) return;
if (k === n && sum === f) {
answer = p_list.slice();
flag = true;
} else {
for (let i = 1; i <= n; i++) {
if (!p_check[i]) {
p_check[i] = 1;
p_list[k] = i;
permutation(k + 1, sum + p_list[k] * c_list[k]);
p_check[i] = 0;
}
}
}
}
// c_list 채우기
for (let i = 0; i < n; i++) {
c_list[i] = comb(n - 1, i);
}
permutation(0, 0);
console.log(c_table);
return answer;
}
console.log(solution(4, 16));
분명 Solution까지 참고해서 잘 푼것 같은데요,
조합이 [1, 3, 3, 1] 이 아니라 [1, 3, 4, 1] 이 나오네요
도대체 어디서 4가 나온 것인지 못찾겠습니다 ㅠㅠㅠ