반응형

programmers.co.kr/learn/courses/30/lessons/72411

 

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

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

programmers.co.kr

from itertools import combinations
from collections import Counter

def solution(orders, course):
    answer = []
    for c in course:
        cur_comb = sum([list(combinations(sorted(order), c)) for order in orders], []) # c만큼의 모든 조합
        cur_comb = Counter(cur_comb).most_common() # 가장 많이 등장하는 c개의 메뉴 조합

        for menus, count in cur_comb:
            if count > 1 and count == cur_comb[0][1]: # 등장 횟수가 2 이상이면서 가장 높은 메뉴들 저장
                answer.append(''.join(menus))
            else: # most_common()의 결과값은 내림차순이므로 더 이상 탐색할 필요 X
                break

    return sorted(answer)

→ 처음에는 주문에 대해 각각 크기 2이상의 모든 메뉴 조합을 저장하고 이후에 course에 있는 크기만 탐색하는식으로

구현했었는데 course에 있는 크기만 조합으로 저장하는게 훨씬 효율적이다. 

 

반응형

'IT study > 알고리즘 문제 풀이' 카테고리의 다른 글

합승 택시 요금  (0) 2021.03.23
순위 검색  (0) 2021.03.09
신규 아이디 추천  (0) 2021.03.08
가사 검색  (0) 2021.03.01
블록 이동하기  (0) 2021.02.28

+ Recent posts