순열 조합

lim1313·2021년 9월 22일
0

순열

순열은 동일한 아이템을 다른 순서로 선택하는 경우 다른 경우의 수로 본다.

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;
}
profile
start coding

0개의 댓글