[백준] 15666 N과 M (12) Node.JS

0

Problem Solving

목록 보기
46/49
post-thumbnail

문제

https://www.acmicpc.net/problem/15666

풀이

주어진 숫자들을 Set 자료형으로 중복을 제거 & 정렬 한 후, 깊이우선탐색으로 현재 index보다 크거나 같은 원소들을 하나씩 붙여가면된다.

let [[N, M], numbers] = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n").map((e) => e.split(" ").map(Number));

const answer = new Array();
numbers = [...new Set(numbers)].sort((a, b) => a - b);

function dfs(depth, index, result) {
  	/* M개만큼 붙였다면 answer에 추가하고 되돌아간다. */
    if (depth === M) {
        answer.push(result.trim());
        return;
    }
  	/* 자신보다 같거나 높은 index의 원소들을 하나씩 붙인다. */
    for (let i = index; i < numbers.length; i++) {
        dfs(depth + 1, i, result + " " + String(numbers[i]));
    }
}

dfs(0, 0, "");
console.log(answer.join("\n"));

0개의 댓글