본문 바로가기

PS/프로그래머스

[프로그래머스 LV 2] 메뉴 리뉴얼 파이썬

728x90

https://programmers.co.kr/learn/courses/30/lessons/72411?language=python3 

 

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

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

programmers.co.kr

 

조합으로 모든 경우를 찾은 후에 해싱하고 가장 큰 값을 찾는 문제

파이썬은 combinations 와 Counter가 있어 편함

카운터는 모든 키에 대해 몇개인지 값을 더해줌

join을 사용하면 원하는 값만 골라올 수 있음

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from itertools import combinations
from collections import Counter
 
def solution(orders, course):
    answer = []
 
    for i in course:
        temp=[]
        for j in orders:
            combi = combinations(sorted(j),i)
            temp+=combi
        counter = Counter(temp)
        if len(counter) !=0 and max(counter.values())>1:
            answer +=[''.join(x) for x in counter if counter[x]==max(counter.values())]
 
    return sorted(answer)
 
 
cs
728x90