순열은 동일한 아이템을 다른 순서로 선택하는 경우 다른 경우의 수로 본다.
function solution(list, pick) {
const result = [];
function comb(cur, arr) {
if (cur.length === pick) return result.push(cur);
for (let i = 0; i < arr.length; i++) {
comb(cur + arr[i], arr.filter((v, j) => j !== i));
}
}
comb('', list);
return result;
}
const list = ['a', 'b', 'c', 'd', 'e'];
const pick = 3;
console.log(solution(list, pick));
function solution(list, pick) {
const result = [];
function comb(cur) {
if (cur.length === pick) return result.push(cur);
for (let i = 0; i < list.length; i++) {
comb(cur + list[i]);
}
}
comb('');
return result;
}
동일한 아이템을 다른 순서로 선택하여도 동일한 경우의 수로 본다.
function solution(list, pick) {
const result = [];
function combination(cur, index) {
if (cur.length === pick) return result.push(cur);
for (let i = index; i < list.length; i++) {
combination(cur + list[i], i + 1);
}
}
combination('', 0);
return result;
}
function solution(list, pick) {
const result = [];
function combination(cur, index) {
if (cur.length === pick) return result.push(cur);
for (let i = index; i < list.length; i++) {
combination(cur + list[i], i);
}
}
combination('', 0);
return result;
}