string의 콤비네이션을 산출하고 가장 많이 빈출한 조합을 나타내기
https://programmers.co.kr/learn/courses/30/lessons/72411
from itertools import combinations
from collections import Counter
def solution(orders, course):
comb_list = {}
for number in course:
comb_subset = ["".join(list(sorted(comb))) for ord in orders if len(ord) >= number for comb in combinations(ord,number)]
if(len(comb_subset) > 0):
comb_list.update({key:value for key,value in Counter(comb_subset).items() if (value >= max(Counter(comb_subset).values())) & (value > 1)})
return sorted(comb_list)
Tip.
1. Counter().most_common() 사용해보기
3. 15줄로 작성할 수 있음
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for N in course:
combination_menu = ["".join(sorted(comb)) for order in orders for comb in combinations(order,N)]
count_menu = Counter(combination_menu).most_common()
answer = answer + [name for name, count in count_menu if (count > 1) and (count == count_menu[0][1])]
return sorted(answer)