1
+
2
+ from itertools import combinations
3
+ def solution (relation ):
4
+ row = len (relation )
5
+ col = len (relation [0 ])
6
+
7
+ comb = []
8
+ for c in range (col ):
9
+ comb .extend (combinations (range (col ), c + 1 )) # 모든 조합
10
+
11
+ unique = []
12
+ for com in comb :
13
+ tmp2 = []
14
+ for i in range (row ): # 유일성 검사
15
+ tmp = []
16
+ for c in com :
17
+ tmp .append (relation [i ][c ])
18
+ if tmp not in tmp2 :
19
+ tmp2 .append (tmp )
20
+ else :
21
+ break
22
+ else : # 유일성 통과, 최소성 거사
23
+ for i in unique :
24
+ if set (i ).issubset (set (com )):
25
+ break
26
+ else :
27
+ unique .append (com ) # 최소성 통과
28
+
29
+ return len (unique )
30
+
31
+ '''
32
+ 테스트 1 〉 통과 (0.04ms, 27.7MB)
33
+ 테스트 2 〉 통과 (0.06ms, 27.8MB)
34
+ 테스트 3 〉 통과 (0.06ms, 27.9MB)
35
+ 테스트 4 〉 통과 (0.03ms, 27.7MB)
36
+ 테스트 5 〉 통과 (0.03ms, 27.9MB)
37
+ 테스트 6 〉 통과 (0.01ms, 27.9MB)
38
+ 테스트 7 〉 통과 (0.02ms, 27.8MB)
39
+ 테스트 8 〉 통과 (0.01ms, 27.8MB)
40
+ 테스트 9 〉 통과 (0.08ms, 27.8MB)
41
+ 테스트 10 〉 통과 (0.09ms, 27.9MB)
42
+ 테스트 11 〉 통과 (0.15ms, 27.9MB)
43
+ 테스트 12 〉 통과 (0.75ms, 27.9MB)
44
+ 테스트 13 〉 통과 (0.25ms, 27.9MB)
45
+ 테스트 14 〉 통과 (0.06ms, 27.7MB)
46
+ 테스트 15 〉 통과 (0.03ms, 27.9MB)
47
+ 테스트 16 〉 통과 (0.04ms, 27.8MB)
48
+ 테스트 17 〉 통과 (0.04ms, 27.9MB)
49
+ 테스트 18 〉 통과 (3.40ms, 27.8MB)
50
+ 테스트 19 〉 통과 (1.54ms, 28MB)
51
+ 테스트 20 〉 통과 (3.14ms, 27.9MB)
52
+ 테스트 21 〉 통과 (0.68ms, 27.9MB)
53
+ 테스트 22 〉 통과 (0.73ms, 27.8MB)
54
+ 테스트 23 〉 통과 (0.05ms, 27.8MB)
55
+ 테스트 24 〉 통과 (1.35ms, 28MB)
56
+ 테스트 25 〉 통과 (2.93ms, 27.9MB)
57
+ 테스트 26 〉 통과 (1.65ms, 27.8MB)
58
+ 테스트 27 〉 통과 (0.27ms, 27.7MB)
59
+ 테스트 28 〉 통과 (0.24ms, 27.9MB)
60
+
61
+ '''
0 commit comments