반응형

문제풀이

1. orders의 각 요소들에 대하여 길이가 c인 요소들을 만듭니다.

2. 1의 결과물을 tmp라 하면, tmp의 각 요소의 등장 빈도수를 셉니다. (코드에서는 collections.Counter() 함수 사용)

3. 빈도수의 최대값이 2 이상인 경우, 빈도수가 최대값과 같은 요소들을 answer 리스트에 넣어줍니다.

4. 1-3의 과정을 모든 길이에 대하여 반복한 후, answer를 사전 순으로 정렬 후 반환합니다.

 

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# https://programmers.co.kr/learn/courses/30/lessons/72411
from itertools import combinations
from collections import Counter
 
def solution(orders, course):
    answer = []
    for c in course:
        tmp = []
        for order in orders:
            for x in combinations(order, c):
                tmp.append(''.join(sorted(x)))
        # 길이가 c인 조합의 등장 빈도 체크
        counter = Counter(tmp)
        if len(counter.values()):
            # 길이가 c인 조합 중 최대 등장 빈도
            m = max(counter.values())
            if m > 1:
                # 등장 빈도가 최대인 조합들을 answer에 넣는다
                answer += [k for k,v in counter.items() if v==m]
    
    return sorted(answer)
cs

문제링크

 

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

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

programmers.co.kr

 

반응형

+ Recent posts