문제
제한 사항
입출력 예
풀이
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를 빈 배열로 초기화하는 이런 방식도 가능하다.