문제
https://school.programmers.co.kr/learn/courses/30/lessons/42890
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드
import java.io.*;
import java.util.*;
class Solution {
public int solution(String[][] relation) {
int answer = 0;
int N = relation.length;
int M = relation[0].length;
List<Integer> keys = new ArrayList<>();
for(int c = 1; c < (1 << M); c++){
Set<String> set = new HashSet<>();
for(int i = 0; i < N; i++) {
String key = "";
for(int j = 0; j < M; j++){
if((c & (1 << j)) > 0){
key+= relation[i][j];
}
}
set.add(key);
}
if(set.size() == N && check(keys, c)){
keys.add(c);
}
}
return keys.size();
}
static boolean check(List<Integer> keys, int newKey) {
for(int key : keys){
if((key & newKey) == key){
return false;
}
}
return true;
}
}
// 유일성, 최소성
'Java' 카테고리의 다른 글
[백준] 3020 : 개똥벌레 (0) | 2025.04.06 |
---|---|
[백준] 2098 : 외판원 순회 (0) | 2025.04.06 |
[프로그래머스] 뒤에 있는 큰 수 찾기 (0) | 2025.04.02 |
[백준] 17472 : 다리 만들기 2 (0) | 2025.04.01 |
[백준] 14890 : 경사로 (0) | 2025.04.01 |