티스토리 뷰

728x90
 

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

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

programmers.co.kr

 

  • 해설 :

손님의 단품요리 주문내역 orders와 코스로 구성할 가짓수 course 배열이 주어질 때, 각 코스마다 어떤 조합으로 코스를 구성해야 가장 잘 팔릴지 선택하는 문제이다. 손님이 단품으로 주문한 메뉴들의 조합을 통해 어떤 코스가 가장 인기있을지 유추해야 한다.

 

 

 

  • 풀이 :

각 손님의 주문내역에서 가능한 요리의 조합을 list에 전부 append한다. 이후 Counter 모듈을 사용하여 list에서 가장 많이 존재하는 원소를 찾으면 된다.  주문 횟수가 같은 요리의 조합이 존재할 수 있고, 주문 횟수가 1번씩인 조합이 가장 많은 주문횟수를 가진 조합일수도 있기 때문에 최소 주문횟수 2를 넘기는 모든 최댓값을 가진 조합을 answer에 넣어주었다.

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from itertools import combinations
from collections import Counter
def solution(orders, course):
    answer = []
    for c in course:
        lst = []
        for s in orders:
            l = [''.join(i) for i in combinations(sorted(s),c)]
            lst += l
        cnt = Counter(lst).most_common()
        m = 2
        for key in cnt:
            if key[1>= m:
                m = key[1]
                answer.append(key[0])
 
    return sorted(answer)
cs
320x100
댓글
© 2022 WonSeok, All rights reserved