ALGORITHM/Kakao

[Python] 메뉴 리뉴얼

김쿸후 2021. 10. 8. 23:44

1. 문제

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

 

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

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

programmers.co.kr

 

2. 풀이

 - 조합

    from itertools import combinations

    combi_list =  list(combinations(setA, i))

 - 부분집합

    setA.intersection(setB)

 - 합집합

    setA.union(setB)

 

3. 코드

from itertools import combinations

def solution(orders, course):
    
    # string -> set
    new_orders = []
    for i in orders:
        ex = set(i)
        new_orders.append(ex)
    
    answer = []
    
    for i in course:
        temp = []
        max_cnt = 0
        
        slice_words = []
        slice_words = set(slice_words)
        for order in orders:
            # 가능한 모든 조합의 합집합
            slice_words = slice_words.union(list(combinations(order, i)))

        for slice_word in slice_words:
            cnt = 0
            for k in new_orders:
                # 조합된 집합이 해당 단어의 부분집합인지 확인 
                if (set(slice_word) == set(slice_word).intersection(set(k))):
                    cnt = cnt +1
            if (cnt >= 2):
                if (max_cnt < cnt):
                    max_cnt = cnt
                    temp = []
                    temp.append(slice_word)
                elif (max_cnt == cnt):
                    temp.append(slice_word)
        
        if temp != []:
            for i in temp:
                temp_string = ''.join(sorted(i))
                answer.append(temp_string)
                
    answer = list(set(answer))
    answer.sort()
    return answer

'ALGORITHM > Kakao' 카테고리의 다른 글

[Python] 2개 이하로 다른 비트  (0) 2021.10.09
[Python] 이진 변환 반복하기  (0) 2021.10.09
[Python] 삼각달팽이  (0) 2021.10.08
[Python] 거리두기 확인하기  (0) 2021.10.05
[Python] 문자열 압축  (0) 2021.10.05