메뉴 리뉴얼

210723

'''
https://programmers.co.kr/learn/courses/30/lessons/72411
메뉴 리뉴얼
[풀이]
1. dictionary와 combinations 사용
'''
from itertools import combinations
def solution(orders, course):
    result = []
    for c in course:
        count = {}
        for order in orders:
            for o in combinations(order , c):
                key = ''.join(sorted(o))
                count.setdefault(key, 0)
                count[key] += 1
        if len(count.keys()) == 0:
            break
        max_count = count[max(count, key=count.get)]
        if max_count > 1:
            for key in count.keys():
                if count[key] == max_count:
                    result.append(key)
    return sorted(result)
'''
`get` 을 사용해 Key로 Value를 얻을 수 있다
또, 아래 코드와 같이 collections.Counter(param).most_common() 을 사용해서 가장 많이 나온 원소를 셀 수 있다

import collections
for course_size in course:
        order_combinations = []
        for order in orders:
            order_combinations += itertools.combinations(sorted(order), course_size)

        most_ordered = collections.Counter(order_combinations).most_common()
        result += [ k for k, v in most_ordered if v > 1 and v == most_ordered[0][1] ]

'''

Last updated

Was this helpful?