프로그래머스 2단계 "메뉴 리뉴얼"

sanha_OvO·2021년 6월 13일
0

Algorithm

목록 보기
47/84

문제

프로그래스 메뉴 리뉴얼


풀이

조합을 이용하여 문제를 풀어야 한다.
itertools의 combinations 라이브러리를 이용하여 코스 수와 동일한 크기의 각 주문의 부분집합을 전부 sets에 넣어주고, Counter 라이브러리를 이용하여 코스의 크기마다 가장 많이 중복된 부분집합을 구해 answer 배열에 넣어주면 된다.


Python 코드

from itertools import combinations
from collections import Counter


def solution(orders, course):
    sets = [[] for _ in range(len(course))]
    for i in range(len(orders)):
        a = sorted(list(orders[i]))
        for j in range(len(course)):
            tmp=combinations(a, course[j])
            sets[j].extend(tmp)
    
    answer = []
    for i in range(len(course)):
        x = Counter(sets[i])
        answer = answer + [''.join(list(j)) for j, y in x.items() if y == max(x.values()) and y > 1]
    return sorted(answer)
profile
Web Developer / Composer

0개의 댓글