BOJ/Silver

[BOJ/백준] 15654번 - N과 M(5) (Javascript / NodeJS)

Paul Eich 2023. 12. 21. 22:25

문제

문제 보러 가기

풀이

이 문제는 기존 N과 M 문제에서 숫자 배열을 주는 문제이다. 마찬가지로 오름차순으로 정렬해야하는데, 이를 위해 배열을 먼저 오름차순으로 정렬한 후 백트래킹 작업을 수행하였다.

"use strict"

const [[n, m], arr] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(str => str.split(' ').map(Number));

function solution(n, m, arr) {
    const answers = [];
    const answer = [];
    const sArr = arr.sort((a,b)=>a-b);
    const isUsed = Array(n).fill(false);

    function bt(k) {
        if (k === m) return answers.push(answer.join(' '));
        for (let i = 0; i < n; i++) {
            if (!isUsed[i]) {
                answer.push(sArr[i]);
                isUsed[i] = true;
                bt(k+1);
                answer.pop();
                isUsed[i] = false;
            }
        }
    }

    bt(0);

    return answers.join('\n');
}

console.log(solution(n, m, arr));