Problem Solving/Programmers
[Programmers] 2021 KAKAO BLIND RECRUITMENT: 메뉴 리뉴얼(Python)
이진2
2021. 6. 8. 03:19
https://programmers.co.kr/learn/courses/30/lessons/72411
코딩테스트 연습 - 메뉴 리뉴얼
레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서
programmers.co.kr
from itertools import combinations
def solution(orders, course):
answer = []
orderset = []
for o in orders:
orderset.append(set(o))
comb=set()
for o in orders:
for num in course:
if num>len(o):break
li = list(combinations(sorted(list(o)),num))
for l in li:
comb.add(l)
can = [[] for _ in range(11)]
for i in comb:
cnt = 0
for o in orderset:
if len(i) > len(o):continue
if len(set(i) - o)==0:
cnt+=1
s = "".join(sorted(list(i)))
if cnt>=2:
can[len(s)].append([s,cnt])
for i in range(len(can)):
if len(can[i])==0:continue
can[i].sort(key=lambda x:x[1], reverse=True)
for c in can[i]:
if c[1]==can[i][0][1]:answer.append(c[0])
return sorted(answer)