if ((i & 1 << k) > 0)

이게 뭘 의미하는지 모르겠어 구글링 계속 해보는데도 여기를 속시원하게 설명해주는데가 없네

설명이 없는거보면 엄청 기본적인 무언가같은데 다른 부분들은 다 납득이 되는데 딱 이 한줄만 뭔 말을 하는질 모르겠음



class Solution{

        List<Integer> answer = new ArrayList<>();


        public int solution(String[][] relation) {

            int n = relation.length;

            int m = relation[0].length;


            for(int i = 1; i < 1 << m; i++){

                Set<String> set = new HashSet<>();

                for(int j = 0; j < n; j++){

                    String temp = "";

                    for(int k = 0; k < m; k++){

                        if((i & 1 << k) > 0){

                            temp += (relation[j][k]);

                        }

                    }

                    set.add(temp);

                }

                if(set.size() == n && check(i)){

                    answer.add(i);

                }

            }

            return answer.size();

        }

        boolean check(int i) {

            for (int j : answer) {

                if ((i & j) == j) return false;

            }

            return true;

        }

    }