
const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'Wiki\\input.txt';
const inputs = fs
.readFileSync(path, 'utf-8')
.trim()
.split('\n')
.map((it) => it.split(' ').map(Number));
const [n, m] = inputs[0];
const numbers = inputs[1].sort((a, b) => a - b);
let ans = '';
const bt = (selected, start) => {
if (selected.length === m) {
ans += selected.join(' ') + '\n';
return;
}
let preNumber = -1;
for (let i = start; i < n; i++) {
if (preNumber !== numbers[i]) {
bt([...selected, numbers[i]], i);
preNumber = numbers[i];
}
}
};
bt([], 0);
console.log(ans);
⏰ 소요한 시간 : -
오랜만에 풀어보는 n과 m시리즈
preNumber이라는 변수가 현재 내가 고르고 있는 수랑 같은지, 다른지 확인한다. start를 전달하여 반복문의 시작 인덱스를 정해준다.