
const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'Wiki\\input.txt';
const [n, m] = fs
.readFileSync(path)
.toString()
.trim()
.split(' ')
.map((it) => Number(it));
let answer = '';
const bt = (target, cnt) => {
if (cnt === m) {
answer += target + '\n';
return;
}
for (let i = 1; i <= n; i++) {
if (target.includes(i)) continue;
if (Number(target.slice(-1)) > i) continue;
bt(target + ' ' + i, cnt + 1);
}
};
for (let i = 1; i <= n; i++) {
bt(i.toString(), 1);
}
console.log(answer);
이전문제인 N과 M(1) 과 동일하게 풀어주었다. 다만 재귀호출을 하기전에 오름차순이 맞는지 확인하는 코드 한줄 추가해줬다.
if (Number(target.slice(-1)) > i) continue;