문제
조합을 이용하여 문제를 풀어야 한다.
itertools의 combinations 라이브러리를 이용하여 코스 수와 동일한 크기의 각 주문의 부분집합을 전부 sets에 넣어주고, Counter 라이브러리를 이용하여 코스의 크기마다 가장 많이 중복된 부분집합을 구해 answer 배열에 넣어주면 된다.
from itertools import combinations
from collections import Counter
def solution(orders, course):
sets = [[] for _ in range(len(course))]
for i in range(len(orders)):
a = sorted(list(orders[i]))
for j in range(len(course)):
tmp=combinations(a, course[j])
sets[j].extend(tmp)
answer = []
for i in range(len(course)):
x = Counter(sets[i])
answer = answer + [''.join(list(j)) for j, y in x.items() if y == max(x.values()) and y > 1]
return sorted(answer)