Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

부분집합 본문

algorithm

부분집합

코드와이 2021. 2. 5. 10:50

 

 부분집합 1 

1, 2, 3 을 갖고 만든 부분 집합으로 재귀를 사용.

[1, 2, 3], [1, 2], [1, 3], [1], [2, 3], [2], [3], [] 을 출력.

package week0201_0205;

public class 부분집합 {
	
	static boolean[] isSelected = new boolean[3];
	static int[] arr = {1,2,3};
	
	public static void main(String[] args) {
		
		func(0);
		
	}
	
	public static void func(int idx) {
		
		if(idx == 3) {
			for(int i = 0 ; i < 3 ; i++) {
				if(isSelected[i]) {
					System.out.print(arr[i]+ " ");
				}
			}
			System.out.println();
			return; 
		}
		
		isSelected[idx] = true;
		func(idx+1);
		isSelected[idx] = false;
		func(idx+1);
	}
}

<실행결과>

 부분집합 2 

1, 2, 3 을 갖고 만든 부분 집합으로 bit 이동으로 비교.

[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3] 을 출력.

package week0201_0205;

public class 부분집합2 {
	
	public static void main(String[] args) {
		int[] arr = {1,2,3};
		
		for(int i = 0 ; i < 8 ; i++) {
			
			for(int j = 0 ; j < 3 ; j++) {
				if((i & (1 << j)) > 0) {
					System.out.print(arr[j]);
				}
			}
			System.out.println();
		}
	}
}

<실행결과>

 

 

 

'algorithm' 카테고리의 다른 글

[Back Tracking] N-Queen 예제 + 설명  (0) 2021.02.18
분할 알고리즘 예시(1)  (0) 2021.02.16
CompleteBinaryTree  (0) 2021.02.10
LinkedList  (0) 2021.02.10
순열과 조합  (0) 2021.02.05