알고리즘 100 :: 백준 순열과 조합(N과M 시리즈)
ㅡ. N과M(1) : 순열
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
|
package backjun;
import java.io.*;
import java.util.*;
public class BOJ_15649_N_M_1{
static int[] k;
static boolean[] c;
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int select = Integer.parseInt(st.nextToken());
k = new int[select];
c = new boolean[n+1];
make(0, n, select, k);
}
static void make(int index, int n, int select, int[] k) {
if(index == select) {
for(int i=0; i<k.length; i++)
System.out.print(k[i]+" ");
System.out.println();
}else {
for(int i=1; i<=n; i++) {
if(c[i]==true) continue;
c[i] = true;
k[index] = i;
make(index+1, n, select, k);
c[i] = false;
}
}
}
}
|
cs |
ㅡ. N과M(2) : 조합
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
|
package backjun;
import java.util.*;
import java.io.*;
public class BOJ_15650_N_M_2 {
static boolean[] c;
static int[] arr;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
c = new boolean[n+1];
arr = new int[m];
make(0,1,n,m);
}
static void make(int index, int start, int n, int m) {
if(index == m) {
for(int i=0; i<arr.length; i++) {
System.out.print(arr[i] +" ");
}
System.out.println();
}else {
for(int i=start; i<=n; i++) {
if(c[start]==true) continue;
c[start] = true;
arr[index] = i;
make(index+1, i+1, n, m);
c[start] = false;
}
}
}
}
|
cs |
ㅡ. N과M(3) : 중복순열
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
|
package backjun;
import java.util.*;
import java.io.*;
public class BOJ_15651_N_M_3 {
static int[] arr;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
arr = new int[m];
make(0, n, m);
System.out.println(sb.toString());
}
static void make(int index, int n, int m) {
if(index == m) {
for(int i=0; i<arr.length; i++)
sb.append(arr[i]+" ");
sb.append("\n");
}else {
for(int i=1; i<=n; i++) {
arr[index] = i;
make(index+1, n, m);
}
}
}
}
|
cs |
ㅡ. N과M(4) : 중복조합
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
|
package backjun;
import java.util.*;
import java.io.*;
public class BOJ_15652_N_M_4 {
static int[] arr;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
arr = new int[m];
make(0,1,n,m);
System.out.println(sb.toString());
}
static void make(int index, int start, int n, int m) {
if(index == m) {
for(int i=0; i<arr.length; i++)
sb.append(arr[i]+" ");
sb.append("\n");
}else {
for(int i=start; i<=n; i++) {
arr[index] = i;
make(index+1, i, n, m);
}
}
}
}
|
cs |
'알고리즘' 카테고리의 다른 글
알고리즘102 :: KAKAO_셔틀버스 (0) | 2020.09.22 |
---|---|
알고리즘101 :: 프로그래머스 - 소수찾기 (0) | 2020.09.21 |
알고리즘 99 :: 2019 카카오 블라인드 코딩테스트 - 후보키 (0) | 2020.09.07 |
알고리즘98 :: swea_3431_준환이의 운동관리 (0) | 2020.09.05 |
알고리즘97 ::거북이 카드만들기 (0) | 2020.08.30 |
댓글
이 글 공유하기
다른 글
-
알고리즘102 :: KAKAO_셔틀버스
알고리즘102 :: KAKAO_셔틀버스
2020.09.22 -
알고리즘101 :: 프로그래머스 - 소수찾기
알고리즘101 :: 프로그래머스 - 소수찾기
2020.09.21 -
알고리즘 99 :: 2019 카카오 블라인드 코딩테스트 - 후보키
알고리즘 99 :: 2019 카카오 블라인드 코딩테스트 - 후보키
2020.09.07 -
알고리즘98 :: swea_3431_준환이의 운동관리
알고리즘98 :: swea_3431_준환이의 운동관리
2020.09.05