밝을희 클태

[백준 node.js / javascript] N과 M2(15650) 문제 본문

백준

[백준 node.js / javascript] N과 M2(15650) 문제

huipark 2023. 11. 8. 02:28

문제

자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.

  • 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열
  • 고른 수열은 오름차순이어야 한다.

입력

첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)

출력

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안 되며, 각 수열은 공백으로 구분해서 출력해야 한다.

수열은 사전 순으로 증가하는 순서로 출력해야 한다.

 

코드 :

const fs = require("fs");
const [N, M] = fs
	.readFileSync("/dev/stdin")
	.toString()
	.trim()
	.split(" ")
	.map((v) => Number(v));
let arr = Array.from({ length: M }, () => 0);

function backtrack(num, depth) {
	if (depth === M) {
		console.log(arr.join(" "));
	} else {
		for (let i = num; i <= N; i++) {
			arr[depth] = i;
			backtrack(i + 1, depth + 1);
		}
	}
}

backtrack(1, 0);

 

코드 설명 :

이 문제는 N과 M1번 문제보다 더 쉽다 그냥 재귀 호출을 할때 num을 + 1씩 하면서 넘겨주고 depthM일때 즉(배열에 M개의 요소가 들어갔을 때) 출력을 해주면 된다.

 

 

N과 M(1)

https://gaebarsaebal.tistory.com/38

 

[백준 node.js / javascript] N과 M1(15649) 문제

문제 : 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 입력 : 첫째 줄에 자연수

gaebarsaebal.tistory.com