코딩 테스트/알고리즘 공부
순열(DFS 깊이우선탐색)
fullfish
2022. 5. 9. 02:15
1부터 n까지의 숫자중
m개를 순열한다면
let arr = ["rock", "scissors", "paper"];
function rockPaperScissors(arr, n) {
let answer = [];
function DFS(L, S) {
if (L === 0) {
answer.push(S);
return;
}
for (let i = 0; i < arr.length; i++) {
if (!S.includes(arr[i])) DFS(L - 1, S.concat(arr[i])); //이건 순열
// DFS(L - 1, S.concat(arr[i])); //이건 중복 순열
}
}
DFS(n, []);
return answer;
}
console.log(rockPaperScissors(arr, 3));
//출력
[
[ 'rock', 'scissors', 'paper' ],
[ 'rock', 'paper', 'scissors' ],
[ 'scissors', 'rock', 'paper' ],
[ 'scissors', 'paper', 'rock' ],
[ 'paper', 'rock', 'scissors' ],
[ 'paper', 'scissors', 'rock' ]
]
저번 중복순열에서 이미 포함되어있으면 안넣는 로직만 추가해주면 된다
수정한 더 깔끔한 코드 : https://fullfish.tistory.com/72?category=1053918
중복순열(DFS 깊이우선탐색)
맨 아래에 다듬은 수정 코드 업데이트 1부터 n까지의 숫자중 m개를 중복순열한다면 function permutationWithRepetition(n, m) { let arr = new Array(m).fill(0); // let arr = Array.from({ length: m }, () =>..
fullfish.tistory.com