중복순열 구하기

bkboy·2022년 5월 19일
0

문제

제한 사항

입출력 예

풀이

const permutation = (n, m) => {
  let answer = [];
  let tmp = new Array(m).fill(0);
  function dfs(L) {
    if (L === m) {
      answer.push(tmp.slice());
    } else {
      for (let i = 1; i <= n; i++) {
        tmp[L] = i;
        dfs(L + 1);
      }
    }
  }
  dfs(0);

  return answer;
};

console.log(permutation(3, 2));
  • 같은 수를 쓸 수 있고 중복((1,2)와 (2,1)은 다른 것)을 허용하는 수열을 뽑는다 = 중복순열
  • 1부터 n까지 여서 반복문이 저렇게 되고, m개를 뽑는 거여서 재귀의 끝나는 조건이 저렇게 되는 것을 잘 이해하자.
const permutation = (n, m) => {
  let answer = [];
  let tmp = [];
  function dfs(L) {
    if (m === tmp.length) {
      answer.push(tmp.slice());
    } else {
      for (let i = 1; i <= n; i++) {
        tmp.push(i);
        dfs(L + 1);
        tmp.pop();
      }
    }
  }
  dfs(0);

  return answer;
};

console.log(permutation(3, 2));
  • tmp를 빈 배열로 초기화하는 이런 방식도 가능하다.
profile
음악하는 개발자

0개의 댓글