얼렁뚱땅 자바이야기
[JAVA] bit 연산을 활용한 부분집합 만들기
MOSTAR
2023. 2. 27. 14:50
오늘 강의를 듣다가 생각도 못한 부분을 배웠다.
바로 부분집합을 구하는 것을 bit 연산을 사용할 수 있다는 것이다.
만약 부분집합을 구해라라는 문제가 있었다면,
나는 아마 백트레킹(?)으로 풀지 않았을까 생각했는데 비트연산 신선했다.
사실 그동안 비트 연산에 대해 잘 몰랐는데 이번 기회에 좀 알아야겠다.
import java.util.*;
import java.io.*;
public class 부분잡헙만들기_bit이용 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
// StringTokenizer st = new StringTokenizer(str);
String [] set = str.split(" ");
int set_size = set.length;
for(int i=0;i<(1<<set_size);i++) {
for(int j=0; j<set_size;j++) {
if ((i & (1<<j)) > 0) {
System.out.print(set[j]+" ");
}
}
System.out.println();
}
}
}