[프로그래머스] 2021 KAKAO BLIND RECRUITMENT _ 메뉴 리뉴얼



1. 문제

https://programmers.co.kr/learn/courses/30/lessons/70129

2. 풀이

자세한 풀이는 주석을 통해 설명을 도왔습니다.

2.1. 정답 풀이

from itertools import combinations

def solution(orders, course):
    answer = []
    for ln in course:             # 코스 요리 개수
        dict = {}                 # 코스 요리 구성을 세기 위한 dictionary
        for x in orders:          # 각 주문들에 대하여 combination을 이용하여 가능한 조합을 모두 생성(이 때 정렬을 꼭 해야한다)
            possibles = [''.join(p) for p in combinations(sorted(x), ln)]
            for one in possibles: # 가능한 조합들을 dictionary를 이용하여 세어줍니다.
                dict[one] = dict.get(one, 0) + 1 
        for key in dict:          # dictionary에 있는 요소들 중 큰 값만 추려서 정답에 추가합니다.
            dict_max = max(dict.values())
            if dict_max >=2 and dict[key] == dict_max:
                answer.append(key)

    return sorted(answer)