[LV2] 메뉴 리뉴얼 문제링크 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. www.programmers.co.kr |
문제해설
이번 문제는 각각의 주문들의 조합을 combinations 함수를 사용하여 구한뒤 Counter 를 사용하여 각각의 중복된 조합의 개수를 딕셔너리 형태로 저장하여 코스 구성에 필요한 메뉴수에 따라서 최대한의 수요를 파악한 후 이를 출력하면 되는 문제이다.
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for c in course:
comb=[]
for order in orders: #각각의 주문의 조합을 리스트에 저장
tmp=list(combinations(sorted(order),c))
comb+=tmp
cnt=Counter(comb)#각각의 조합의 중복된 횟수를 딕셔너리 형태로 저장
if len(cnt) != 0 and max(cnt.values()) != 1: #메뉴의수가 0개거나 최대 중복횟수가 1인 경우 스킵
for alpha in cnt: #메뉴조합이 최대횟수로 반복되면 answer에 삽입
if cnt[alpha]== max(cnt.values()):
answer+=[''.join(alpha)]
return sorted(answer)
Feedback
- 조합하는 것까지는 생각했지만 그 이후에 Counter을 사용하는것은 구글링을 통해서 알게 되었다. 차후에 다시 한번 문제를 풀어봐야 한다.
- 마지막에 join하는것에 있어서 개념이 부족했다 join의 여러가지 활용들을 확인해봐야 할 것 같다.
'algorithm > 프로그래머스 문제' 카테고리의 다른 글
[프로그래머스 LV2] 뉴스 클러스터링 (0) | 2022.07.19 |
---|---|
[프로그래머스 LV2]행렬 테두리 회전하기 (0) | 2022.07.18 |
[프로그래머스 LV2] 소수 찾기 (0) | 2022.07.15 |
[프로그래머스 LV2] 카펫 (0) | 2022.07.14 |
[프로그래머스 LV2] 튜플 (0) | 2022.07.14 |