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

JinUk Lee·2023년 2월 24일
0

프로그래머스

목록 보기
17/48
post-custom-banner

https://school.programmers.co.kr/learn/courses/30/lessons/72411



from itertools import combinations

def solution(orders, course):
    answer = []

    for num in course:

        com = []

        for ord in orders:
            ord = sorted(ord)
            if len(ord) >= num:
                com+=list(combinations(ord,num))

        com = list(set(com))

        max_count = 0
        temt = []
        for c in com:

            count = 0
            for o in orders:
                check = True
                for i in range(num):
                    if c[i] not in o:
                        check = False
                if check:
                    count+=1

            if count>=2:
                if count >= max_count:
                    max_count = count
                    temt.append((c,count))

        temt.sort(key=lambda x:(-x[1]))

        for t in temt:
            if t[1]==temt[0][1]:
                answer.append(''.join(t[0]))
    answer.sort()
    return answer

처음에는 주문된 모든 메뉴를 추출해서 조합을 구했다.

그런데 이렇게 하면 시간초과가 발생한다

예를 들어 ['ABC','DEF'] 가 있고 2개의 코스요리를 구한다면 'AD', 'AF'같은 코스는 절대 나올 수 없기 때문이다

profile
개발자 지망생
post-custom-banner

0개의 댓글