-
순열 조합을 응용하여 주사위 3개를 던질 때 경우의 수를 테스트해보았다.
순열 - 주사위를 3번 던져서 모두 다른 수가 나올 수 있는 모든 경우
[1, 2, 3] [1, 2, 4] [1, 2, 5] ... [1, 3, 2] ... [6, 5, 4]
import java.util.Arrays; public class 주사위순열 { static int[] out = new int[3]; static boolean[] select = new boolean[6]; public static void main(String[] args) { perm(0); } static void perm(int index) { if(index == 3) { System.out.println(Arrays.toString(out)); return; } for (int i = 0; i < 6; i++) { if(select[i]) continue; out[index] = i+1; select[i] = true; perm(index+1); select[i] = false; } } }
중복 순열 - 주사위를 3번 던져서 나올 수 있는 모든 경우
[1, 1, 1] [1, 1, 2] [1, 1, 3] ... [1, 2, 1] ....[6, 6, 6]
import java.util.Arrays; public class 주사위중복순열 { static int[] out = new int[3]; public static void main(String[] args) { perm(0); } static void perm(int index) { if(index == 3) { System.out.println(Arrays.toString(out)); return; } for (int i = 0; i < 6; i++) { out[index] = i+1; perm(index+1); } } }
조합 - 주사위를 3번 던져서 모두 다른 수가 나올 수 있는 모든 경우 단, 같은 수는 가 연속 나오는 경우는 없다.
[1, 2, 3] [1, 2, 4] [1, 2, 5] ... [1, 3, 4] ... [4, 5, 6]
import java.util.Arrays; public class 주사위중복조합 { static int[] out = new int[3]; public static void main(String[] args) { comb(0,0); } static void comb(int start, int index) { if(index == 3) { System.out.println(Arrays.toString(out)); return; } for (int i = start; i < 6; i++) { out[index] = i+1; comb(i+1, index+1); } } }
중복조합 - 주사위를 3번 던져서 모두 다른 수가 나올 수 있는 모든 경우 단, 1 1 2 과 1 1 은 같은 수로 본다.
[1, 1, 1] [1, 1, 2] ... [1, 1, 6] ... [1, 2, 2] ... [6, 6, 6]
import java.util.Arrays; public class 주사위중복조합 { static int[] out = new int[3]; public static void main(String[] args) { comb(0,0); } static void comb(int start, int index) { if(index == 3) { System.out.println(Arrays.toString(out)); return; } for (int i = start; i < 6; i++) { out[index] = i+1; comb(i, index+1); } } }
728x90'공부 > JAVA' 카테고리의 다른 글
Set, HashSet, LinkedHashSet, TreeSet 사용법 & 간단 사용 예제 (0) 2021.10.31 List, ArrayList, LinkedList 사용법 & 간단 사용 예제 (0) 2021.10.30 HashMap, TreeMap 사용법 & 간단 사용 예제 (0) 2021.10.30 Comparable, Comparator 사용하기 JAVA (0) 2021.10.30 스택, 큐 사용하기 JAVA (0) 2021.10.30 댓글