프로그래머스/LV2
[프로그래머스 Lv2,python] - 메뉴 리뉴얼
chyam_eun
2025. 3. 10. 15:20
https://school.programmers.co.kr/learn/courses/30/lessons/72411
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
from itertools import combinations
def change(comb): # [('A','B'),('B','C')] 형식을 ["AB,"BC"]로 바꿔주기
li=[]
for i in comb:
li.append(''.join(i))
return li
def solution(orders, course):
res=[] # 길이별로 최대 저장
an=[] # 최종 결과
for num in course: # 길이별로 나누기
orderDic={} # 주문된 갯수 저장
ma=2 # 최대 주문 수
lis=[]
for food in orders:
food=list(food) # 정렬을 위해 list로 변환
food.sort()
comb= list(combinations(food,num)) # num만큼의 길이로 조합 구하기
li=change(comb)
for d in li: # 개수 세기
if d not in orderDic: # 딕셔너리에 저장되지않았으면 1로 초기화
orderDic[d]=1
else:
orderDic[d]+=1
for d in orderDic:
if ma<orderDic[d]: # 최대값보다 크면
ma=orderDic[d] # 갱신
lis=[] # 초기화
lis.append(d) # 추가
elif ma==orderDic[d]: # 최대랑 같으면 추가
lis.append(d)
if len(lis)>0: # 주문된게 있으면 추가해주기
res.append(lis)
for i in res: # [["AC","CD"],["DE"]] 에서 각각 뽑아서 새로운 리스트에 저장
for j in i:
an.append(j)
an.sort()
return an