[프로그래머스] 메뉴 리뉴얼

섬섬's 개발일지·2022년 2월 12일
0

프로그래머스

목록 보기
15/50

문제

각 손님들이 주문한 단품메뉴들이 문자열 형식으로 담긴 배열 orders, '스카피'가 추가하고 싶어하는 코스요리를 구성하는 단품 메뉴들의 갯수가 담긴 배열 course가 매개변수로 주어질 때, '스카피'가 새로 추가하게 될 코스요리의 메뉴 구성을 문자열 형태로 배열에 담아 return 하도록 solution 함수를 완성해 주세요.

제한사항

  • orders 배열의 크기는 2 이상 20 이하입니다.
  • orders 배열의 각 원소는 크기가 2 이상 10 이하인 문자열입니다.
    • 각 문자열은 알파벳 대문자로만 이루어져 있습니다.
    • 각 문자열에는 같은 알파벳이 중복해서 들어있지 않습니다.
  • course 배열의 크기는 1 이상 10 이하입니다.
    • course 배열의 각 원소는 2 이상 10 이하인 자연수가 오름차순으로 정렬되어 있습니다.
    • course 배열에는 같은 값이 중복해서 들어있지 않습니다.
  • 정답은 각 코스요리 메뉴의 구성을 문자열 형식으로 배열에 담아 사전 순으로 오름차순 정렬해서 return 해주세요.
    • 배열의 각 원소에 저장된 문자열 또한 알파벳 오름차순으로 정렬되어야 합니다.
    • 만약 가장 많이 함께 주문된 메뉴 구성이 여러 개라면 모두 배열에 담아 return 하면 됩니다.
    • orders와 course 매개변수는 return 하는 배열의 길이가 1 이상이 되도록 주어집니다.

코드

from itertools import combinations
def solution(orders, course):
    answer = []
    for c in course:
        results = {}
        for order in orders:
            for comb in combinations(order, c):
                menu = ''.join(sorted(list(comb)))
                if menu in results:
                    results[menu] += 1
                else:
                    results[menu] = 1
        maxNum = 0
        for num in results.values():
            maxNum = max(maxNum, num)
        if maxNum >= 2:
            for result,num in results.items():
                if num == maxNum:
                    answer.append(result)
    return sorted(answer)
profile
섬나라 개발자

0개의 댓글