본문 바로가기
Python3/프로그래머스

2022.03.09 [프로그래머스] (python 파이썬) 메뉴 리뉴얼

by ian's coding 2022. 3. 9.
728x90
반응형

 

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

 

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

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

programmers.co.kr


풀이

이 문제는 조합을 이용하여 해결했다. 우선 만들고 싶은 코스요리의 개수가 적힌 course로 for문을 돌려 해당 인덱스에 맞게 조합을 이용했다. 그리고 오름차순으로 저장하기 위해 sorted를 이용해 오름차순으로 정렬 후, menu배열에 저장했다. 해당 개수의 조합을 모두 저장했으면 Counter의 most_common() 메서드를 통해 데이터의 개수가 많은 순으로 정렬된 배열을 리턴받았다. 그리고 갯수가 1보다 많고 가장 많은 갯수와 같은 메뉴들을 answer에 저장했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from itertools import combinations
from collections import Counter
 
def solution(orders, course):
    answer = []
    for i in course:
        menu=[]
        for j in orders:
            for comb in combinations(j,i):
                sorted_comb=''.join(sorted(comb))
                menu.append(sorted_comb)
        sort_menu=Counter(menu).most_common()
        for menu, cnt in sort_menu:
            if cnt>1 and cnt==sort_menu[0][1]:
                answer.append(menu)
    answer.sort()
    return answer
cs

 

 

 

 

728x90
반응형

댓글