Skip to content

Commit dcbfe2e

Browse files
committed
[Silver III] Title: N과 M (1), Time: 2224 ms, Memory: 83668 KB -BaekjoonHub
1 parent c4da847 commit dcbfe2e

2 files changed

Lines changed: 29 additions & 41 deletions

File tree

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,48 @@
11
import java.io.BufferedReader;
2-
import java.io.FileInputStream;
32
import java.io.InputStreamReader;
4-
import java.util.*;
3+
import java.util.StringTokenizer;
54

65
public class Main {
7-
private static int N;
8-
private static int M;
6+
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
static StringBuilder sb = new StringBuilder();
8+
static StringTokenizer st;
9+
static int n = 0, m = 0;
10+
static boolean[] visited;
911

1012
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());
13+
st = new StringTokenizer(br.readLine());
1614

17-
//선택한 숫자들 표시
18-
boolean[] visited = new boolean[N];
15+
n = Integer.parseInt(st.nextToken());
16+
m = Integer.parseInt(st.nextToken());
1917

20-
//현재 선택한 숫자 순서
21-
List<Integer> temp = new ArrayList<>();
18+
int[] arr = new int[m];
19+
visited = new boolean[n+1];
2220

23-
dfs(visited, temp, 0);
21+
22+
dfs(0, arr);
2423

2524

2625
}
2726

28-
private static void dfs(boolean[] visited, List<Integer> temp, int count) {
29-
if (count == M) {
30-
print(temp);
27+
static void dfs(int idx, int[] arr) {
28+
if (idx == m) {
29+
for(int i : arr) {
30+
System.out.print(i + " ");
31+
}
32+
System.out.println();
3133
return;
3234
}
3335

34-
for (int i = 0; i < N; i++) {
35-
if (visited[i]) {
36-
continue;
37-
}
38-
//숫자 선택
39-
visited[i] = true;
40-
temp.add(i);
41-
42-
dfs(visited, temp, count + 1);
43-
44-
visited[i] = false;
45-
temp.remove(temp.size() - 1);
36+
for (int i = 0; i < n; i++) {
37+
if (visited[i + 1]) continue;
38+
39+
arr[idx] = i + 1;
40+
visited[i + 1] = true;
41+
dfs(idx + 1, arr);
42+
visited[i + 1] = false;
4643
}
4744

4845
}
4946

50-
private static void print(List<Integer> temp) {
51-
StringBuilder sb = new StringBuilder();
52-
for (int i = 0; i < temp.size() - 1; i++) {
53-
sb.append(temp.get(i) + 1 + " ");
54-
}
55-
sb.append(temp.get(temp.size() - 1) + 1).append("\n");
56-
57-
System.out.print(sb.toString());
5847

59-
}
60-
}
48+
}

백준/Silver/15649. N과 M (1)/README.md

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

55
### 성능 요약
66

7-
메모리: 58640 KB, 시간: 804 ms
7+
메모리: 83668 KB, 시간: 2224 ms
88

99
### 분류
1010

1111
백트래킹
1212

1313
### 제출 일자
1414

15-
2026년 1월 13일 14:06:36
15+
2026년 4월 3일 21:42:45
1616

1717
### 문제 설명
1818

0 commit comments

Comments
 (0)