Skip to content

Commit cd488cd

Browse files
committed
[Silver III] Title: N과 M (2), Time: 100 ms, Memory: 14164 KB -BaekjoonHub
1 parent 8467446 commit cd488cd

2 files changed

Lines changed: 55 additions & 2 deletions

File tree

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import java.io.BufferedReader;
2+
import java.io.InputStreamReader;
3+
import java.util.*;
4+
5+
public class Main {
6+
private static int N;
7+
private static int M;
8+
private static StringBuilder sb = new StringBuilder();
9+
10+
public static void main(String[] args) throws Exception {
11+
// System.setIn(new FileInputStream("input.txt")); // 제출 시 이 줄만 주석처리
12+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
13+
StringTokenizer st = new StringTokenizer(br.readLine());
14+
N = Integer.parseInt(st.nextToken());
15+
M = Integer.parseInt(st.nextToken());
16+
17+
18+
boolean[] checked = new boolean[N];
19+
int[] temp = new int[N];
20+
// 현재 인덱스, 현재 선택한 값, 현재 선택한 갯수
21+
dfs(0, checked, temp, 0);
22+
23+
sb.deleteCharAt(sb.length() - 1);
24+
System.out.print(sb);
25+
26+
}
27+
28+
private static void dfs(int idx, boolean[] checked, int[] temp, int cnt) {
29+
if (cnt == M) {
30+
for (int i = 0; i < M - 1; i++) {
31+
sb.append(temp[i]).append(" ");
32+
}
33+
sb.append(temp[M - 1]).append("\n");
34+
35+
return;
36+
}
37+
38+
for (int i = idx; i < N; i++) {
39+
checked[i] = true;
40+
temp[cnt] = i + 1;
41+
dfs(i + 1, checked, temp, cnt + 1);
42+
checked[i] = false;
43+
temp[cnt] = 0;
44+
45+
}
46+
47+
}
48+
49+
}

백준/Silver/15650. N과 M (2)/README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@
44

55
### 성능 요약
66

7-
메모리: 113112 KB, 시간: 112 ms
7+
메모리: 14164 KB, 시간: 100 ms
88

99
### 분류
1010

11-
백트래킹(backtracking)
11+
백트래킹
12+
13+
### 제출 일자
14+
15+
2026년 1월 13일 20:44:27
1216

1317
### 문제 설명
1418

0 commit comments

Comments
 (0)