공부/ALGORITHM3 부분집합 부분집합 집합에서 원소를 선택하는 것이다. idx는 뽑으려고 하는 수의 인덱스다. 인덱스가 총 뽑을 수 있는 수의 개수(N)와 동일하면 끝난다. isSelected는 뽑은 수를 저장하는 배열이다. 이 코드에서는 값 없이 뽑은 수의 인덱스만 저장했다. 공집합, 모든 원소를 포함하는 집합도 포함한다. private static void subSet(int idx){ if(idx==N){ for(int i=0;i 공부/ALGORITHM 2022. 4. 8. 조합과 중복조합 조합 cnt가 M(총 뽑아야 하는 개수)과 동일하면 끝난다. start+1부터 N(뽑을 수 있는 수의 개수)까지 중복체크 없이 돈다. 이미 start+1부터 시작했기 때문이다. 다음 조합을 위해 start+1값부터 N까지 넣어서 재귀 호출한다. private static void findC(int cnt, int start) { if(cnt==M) { for(int i=0;i 공부/ALGORITHM 2022. 2. 20. 순열과 중복순열 순열 중복을 제거하기 때문에 flag가 필요하다. cnt가 M(총 뽑아야 하는 개수)과 동일하면 끝낸다. 0부터 N(뽑을 수 있는 수의 개수)까지 중에서 이미 뽑은 수를 제외하고 해당 순서에 숫자를 저장한다.(순열 저장 배열) 다시 재귀로 다음 순서부터 순열을 찾는다. private static void findP(int cnt, int flag) { if(cnt==M) { for(int i=0;i 공부/ALGORITHM 2022. 2. 20. 이전 1 다음