개발하는 두부

[Programmers] 메뉴 리뉴얼 (Python)

by 뚜부니

 

 

코딩테스트 연습 - 메뉴 리뉴얼

레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서

programmers.co.kr

 

이 문제는 정해진 수만큼의 단품 메뉴 갯수가 포함된 코스 요리를 만드는 문제입니다.

단, 최소 2명 이상 주문한 음식이어야하고, 2명 이상 주문한 메뉴 조합이어야 합니다.

 

먼저 combinations를 사용해 정해진 단품 메뉴 갯수만큼 메뉴 조합을 생성하여 리스트에 저장합니다.

그 후 Counter를 사용해 메뉴 조합 리스트에서 각각의 메뉴 조합 수를 세어줍니다.

그 중 메뉴 조합이 가장 많이 나온 값을 max_로 지정해줍니다.

max_가 2 이상이면, 주어진 조건을 모두 만족하므로 코스 요리로 추가합니다.

 

위와 같은 방식으로 풀면 다음과 같습니다.

 

from itertools import combinations
from collections import Counter

def solution(orders, course):
    answer = []
    
    for c in course :
        temp = []
        for order in orders :
            combi = combinations(sorted(order), c)
            temp += combi
        odict = Counter(temp) 
        
        if odict : 
            max_ = max(list(odict.values()))
            if max_ >= 2:
                for key, value in odict.items() :
                    if odict[key] == max_ :
                        answer.append(''.join(key))
    
    return sorted(answer)
 

블로그의 정보

개발하는 두부

뚜부니

활동하기