[programmers] 메뉴 리뉴얼

데린이·2022년 4월 22일
0

string의 콤비네이션을 산출하고 가장 많이 빈출한 조합을 나타내기
https://programmers.co.kr/learn/courses/30/lessons/72411

22-04-22 code


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줄로 작성할 수 있음

22-05-03 code

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)
profile
취뽀를 기원하는 취준생입니다!

0개의 댓글