ALGORITHM/BOJ
[백준] N과 M (시리즈)
0298
2021. 4. 21. 21:30
www.acmicpc.net/workbook/view/2052
문제집: N과 M (시리즈)
www.acmicpc.net
2021-04-21
1. N과 M (1) :: 15649
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main15649_NM1 {
public static int N, M;
public static int[] arr;
public static boolean[] vtd;
public static void solve(int cnt) {
if(cnt == M) {
for(int i = 0; i < M; i++) System.out.print(arr[i] + " ");
System.out.println();
return;
}
for(int i = 0; i < N; i++) {
if(!vtd[i]) {
vtd[i] = true;
arr[cnt] = (i+1);
solve(cnt+1);
vtd[i] = false;
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[M];
vtd = new boolean[N];
solve( 0);
}
}
|
cs |
2. N과 M (2) :: 15650
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main15650_NM2 {
public static int N, M;
public static int[] arr;
public static boolean[] vtd;
public static void solve(int idx, int cnt) {
if(cnt == M) {
for(int i = 0; i < M; i++) System.out.print(arr[i] + " ");
System.out.println();
return;
}
for(int i = idx; i < N; i++) {
if(!vtd[i]) {
vtd[i] = true;
arr[cnt] = (i+1);
solve(i, cnt+1);
vtd[i] = false;
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[M];
vtd = new boolean[N];
solve(0, 0);
}
}
|
cs |
3. N과 M (3) :: 15651
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main15651_NM3 {
public static int N, M;
public static int[] arr;
public static StringBuilder sb;
public static void solve(int cnt) {
if(cnt == M) {
for(int i = 0; i < M; i++) sb.append(arr[i]).append(" ");
sb.append("\n");
return;
}
for(int i = 0; i < N; i++) {
arr[cnt] = (i+1);
solve(cnt+1);
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
sb = new StringBuilder();
arr = new int[M];
solve(0);
System.out.println(sb.toString());
}
}
|
cs |
4. N과 M (4) :: 15652
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main15652_NM4 {
public static int N, M;
public static int[] arr;
public static StringBuilder sb;
public static void solve(int idx, int cnt) {
if(cnt == M) {
for(int i: arr) sb.append(i + " ");
sb.append("\n");
return;
}
for(int i = idx; i < N; i++) {
arr[cnt] = (i+1);
solve(i, cnt+1);
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[M];
sb = new StringBuilder();
solve(0, 0);
System.out.println(sb.toString());
}
}
|
cs |
5. N과 M (5) :: 15654
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main15654_NM5 {
public static int N, M;
public static int[] arr, order;
public static boolean[] vtd;
public static StringBuilder sb;
public static void solve( int cnt) {
if(cnt == M) {
for(int value: order) sb.append(arr[value] + " ");
sb.append("\n");
return;
}
for(int i = 0; i < arr.length; i++) {
if(!vtd[i]) {
vtd[i] = true;
order[cnt] = i;
solve(cnt+1);
vtd[i] = false;
}
}
}
public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[N];
vtd = new boolean[N];
order = new int[M];
sb = new StringBuilder();
st = new StringTokenizer(bf.readLine());
for(int i = 0; i < N; i++) arr[i] = Integer.parseInt(st.nextToken());
Arrays.sort(arr);
solve(0);
System.out.println(sb.toString());
}
}
|
cs |
6. N과 M (6) :: 15655
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main15655_NM6 {
public static int N, M;
public static int[] arr, order;
public static boolean[] vtd;
public static StringBuilder sb;
public static void solve(int idx, int cnt) {
if(cnt == M) {
for(int value: order) sb.append(arr[value]).append(" ");
sb.append("\n");
return;
}
for(int i = idx; i < N; i++) {
if(!vtd[i]) {
vtd[i] = true;
order[cnt] = i;
solve(i, cnt+1);
vtd[i] = false;
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[N];
order = new int[M];
vtd = new boolean[N];
sb = new StringBuilder();
st = new StringTokenizer(bf.readLine());
for(int i = 0; i < N; i++) arr[i] = Integer.parseInt(st.nextToken());
Arrays.sort(arr);
solve(0, 0);
System.out.println(sb.toString());
}
}
|
cs |
7. N과 M (7) :: 15656
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main15656_NM7 {
public static int N, M;
public static int[] arr, order;
public static StringBuilder sb;
public static void solve(int cnt) {
if(cnt == M) {
for(int val: order) sb.append(arr[val]).append(" ");
sb.append("\n");
return;
}
for(int i = 0; i < N; i++) {
order[cnt] = i;
solve(cnt+1);
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[N];
order = new int[M];
sb = new StringBuilder();
st = new StringTokenizer(bf.readLine());
for(int i = 0; i < N; i++) arr[i] = Integer.parseInt(st.nextToken());
Arrays.sort(arr);
solve( 0);
System.out.println(sb.toString());
}
}
|
cs |
8. N과 M (8) :: 15657
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main15657_NM8 {
public static int N, M;
public static int[] arr, order;
public static StringBuilder sb;
public static void solve(int idx, int cnt) {
if(cnt == M) {
for(int val: order) sb.append(arr[val]).append(" ");
sb.append("\n");
return;
}
for(int i = idx; i < N; i++) {
order[cnt] = i;
solve(i, cnt+1);
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[N];
order = new int[M];
sb = new StringBuilder();
st = new StringTokenizer(bf.readLine());
for(int i = 0; i < N; i++) arr[i] = Integer.parseInt(st.nextToken());
Arrays.sort(arr);
solve(0, 0);
System.out.println(sb.toString());
}
}
|
cs |
9. N과 M (9) :: 15663
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main15663_NM9 {
public static int N, M;
public static int[] arr;
public static boolean[] vtd;
public static HashSet<String> set;
public static List<String> list;
public static void solve(int cnt, String str) {
if(cnt == M) {
if(!set.contains(str)) {
set.add(str);
list.add(str);
}
return;
}
for(int i = 0; i < N; i++) {
if(!vtd[i]) {
vtd[i] = true;
solve(cnt+1, (str + (arr[i])+ " "));
vtd[i] = false;
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[N];
vtd = new boolean[N];
list = new ArrayList<>();
set = new HashSet<>();
st = new StringTokenizer(bf.readLine());
for(int i = 0; i < N; i++) arr[i] = Integer.parseInt(st.nextToken());
Arrays.sort(arr);
solve( 0, "");
StringBuilder sb = new StringBuilder();
for (String s : list) {
sb.append(s).append("\n");
}
System.out.println(sb.toString());
}
}
|
cs |
10. N과 M (10) :: 15664
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
import javax.imageio.IIOException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Main15664_NM10 {
public static int N, M;
public static int[] arr;
public static boolean[] vtd;
public static ArrayList<String> list;
public static HashSet<String> set;
public static void solve(int idx, int cnt, String str) {
if(cnt == M) {
if(!set.contains(str)) {
set.add(str);
list.add(str);
}
return;
}
for(int i = idx; i < N; i++) {
if(!vtd[i]) {
vtd[i] = true;
solve(i, cnt+1, (str + arr[i] + " "));
vtd[i] = false;
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[N];
vtd = new boolean[N];
list = new ArrayList<>();
set = new HashSet<>();
st = new StringTokenizer(bf.readLine());
for(int i = 0; i < N; i++) arr[i] = Integer.parseInt(st.nextToken());
Arrays.sort(arr);
solve(0, 0, "");
StringBuilder sb = new StringBuilder();
for(String val: list) sb.append(val).append("\n");
System.out.println(sb.toString());
}
}
|
cs |
11. N과 M (11) :: 15665
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Main15665_NM11 {
public static int N, M;
public static int[] arr, order;
public static StringBuilder sb;
public static void solve(int cnt) {
if(cnt == M) {
for(Integer val: order) sb.append(arr[val]).append(" ");
sb.append("\n");
return;
}
for(int i = 0; i < arr.length; i++) {
order[cnt] = i;
solve(cnt+1);
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
order = new int[M];
HashSet<Integer> set = new HashSet<>();
st = new StringTokenizer(bf.readLine());
for(int i = 0; i < N; i++) {
set.add(Integer.parseInt(st.nextToken()));
}
arr = new int[set.size()];
int idx = 0;
for(Integer val: set) {
arr[idx] = val;
idx++;
}
Arrays.sort(arr);
sb = new StringBuilder();
solve(0);
System.out.println(sb.toString());
}
}
|
cs |
12. N과 M (12) :: 15666
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Main15666_NM12 {
public static int N, M;
public static int[] arr, order;
public static StringBuilder sb;
public static void solve(int idx, int cnt) {
if(cnt == M) {
for(int val: order) sb.append(arr[val]).append(" ");
sb.append("\n");
return;
}
for(int i = idx; i < arr.length; i++) {
order[cnt] = i;
solve(i, cnt+1);
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
HashSet<Integer> set = new HashSet<>();
st = new StringTokenizer(bf.readLine());
for(int i = 0; i < N; i++) set.add(Integer.parseInt(st.nextToken()));
arr = new int[set.size()];
order = new int[M];
int idx = 0;
for(Integer val:set) {
arr[idx] = val;
idx++;
}
Arrays.sort(arr);
sb = new StringBuilder();
solve(0, 0);
System.out.println(sb.toString());
}
}
|
cs |
#문제풀이
심심해서 풀어봤다. 딱 연습하기 좋은 문제들이다.