문제 링크
https://www.acmicpc.net/problem/15663
풀이
const solve = (N, M, arr) => {
const chosen = new Array(N).fill(false);
const permutation = [];
const output = [];
const recursion = () => {
if (permutation.length === M) {
output.push(permutation.join(' '));
} else {
chosen.forEach((bool, i) => {
if (!bool) {
chosen[i] = true;
permutation.push(arr[i]);
recursion();
chosen[i] = false;
permutation.pop();
}
})
}
};
recursion();
console.log([...new Set(output)].join('\n'));
};
const [ N, M, ...arr ] = require('fs').readFileSync('/dev/stdin').toString().trim().split(/\s+/);
arr.sort((a, b) => a - b);
solve(+N, +M, arr);
이 문제는 [백준 15654] N과 M (5) 문제에서 출력값이 중복되는 것이 없도록 한 것과 같다.
따라서, 위 문제의 해답에서 마지막 출력에서의 중복을 제거해주면 된다.
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 10972] 다음 순열 with Node.js (0) | 2021.12.01 |
---|---|
[백준 2294] 동전 2 with Python (1) | 2021.09.28 |
[백준 2293] 동전 1 with Python (0) | 2021.09.10 |
[백준 11057] 오르막 수 with Python (0) | 2021.09.09 |
[백준 9251] LCS with Python (0) | 2021.09.09 |