1answer = [0, 0]
 2
 3def solution(arr):
 4    def recursion(sx, sy, k):
 5        global answer
 6        origin = arr[sy][sx]
 7        cnt = 0
 8        for i in range(sx, sx+k):
 9            for j in range(sy, sy+k):
10                if origin != arr[j][i]:
11                    recursion(sx, sy, k//2)
12                    recursion(sx+k//2, sy, k//2)
13                    recursion(sx, sy+k//2, k//2)
14                    recursion(sx+k//2, sy+k//2, k//2)
15                    return
16        answer[origin] += 1
17
18    recursion(0, 0, len(arr))
19    return answer

๋ฌธ์ œ

 1from itertools import combinations
 2from collections import defaultdict
 3
 4def solution(orders, course):
 5    answer = []
 6
 7    for i in course:
 8        dataset = defaultdict(int)
 9
10        for j in orders:
11            for k in combinations(j, i):
12                # ABC, ACB๋ฅผ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ ฌ
13                dataset[''.join(sorted(k))] += 1
14
15        if len(dataset) == 0:
16            continue
17
18        max_value = max(dataset.values())
19
20        # 2๋ฒˆ ์ด์ƒ ์ฃผ๋ฌธ๋œ ๋ฉ”๋‰ด๋งŒ ์ถ”๊ฐ€
21        if max_value == 1:
22            continue
23        
24        for k, _ in filter(lambda x:x[1] == max_value, dataset.items()):
25            answer.append(''.join(k))
26
27    return sorted(answer)

๋ฌธ์ œ