Skip to content

Commit c67a1ab

Browse files
committed
[Silver III] Title: N과 M (5), Time: 192 ms, Memory: 22884 KB -BaekjoonHub
1 parent 5f16f07 commit c67a1ab

2 files changed

Lines changed: 69 additions & 0 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
let input = require('fs').readFileSync('./dev/stdin').toString().trim().split('\n');
2+
let [N, M] = input[0].split(' ').map(Number);
3+
let arr = input[1].split(' ').map(Number);
4+
let issued = Array(N).fill(0);
5+
6+
let stack = [];
7+
let answer = [];
8+
9+
arr.sort((a, b) => a - b);
10+
11+
function sol(k) {
12+
if (stack.length === M) {
13+
answer.push(stack.join(' '));
14+
return;
15+
}
16+
17+
// 하나씩 방문하면서 전체 돌기
18+
for (let i = 0; i < N; i++) {
19+
if (!issued[i]) {
20+
issued[i] = true;
21+
stack.push(arr[i]);
22+
sol(k + 1);
23+
issued[i] = false;
24+
stack.pop();
25+
}
26+
}
27+
}
28+
29+
sol(0);
30+
31+
console.log(answer.join('\n'));
32+
33+
// 시간
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# [Silver III] N과 M (5) - 15654
2+
3+
[문제 링크](https://www.acmicpc.net/problem/15654)
4+
5+
### 성능 요약
6+
7+
메모리: 22884 KB, 시간: 192 ms
8+
9+
### 분류
10+
11+
백트래킹
12+
13+
### 제출 일자
14+
15+
2026년 2월 28일 17:05:01
16+
17+
### 문제 설명
18+
19+
<p>N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.</p>
20+
21+
<ul>
22+
<li>N개의 자연수 중에서 M개를 고른 수열</li>
23+
</ul>
24+
25+
### 입력
26+
27+
<p>첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)</p>
28+
29+
<p>둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.</p>
30+
31+
### 출력
32+
33+
<p>한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.</p>
34+
35+
<p>수열은 사전 순으로 증가하는 순서로 출력해야 한다.</p>
36+

0 commit comments

Comments
 (0)