반응형
문제풀이
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
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 후보키 Python (0) | 2022.03.01 |
---|---|
[프로그래머스] 신고 결과 받기 Python (0) | 2022.01.28 |
[프로그래머스] 행렬 테두리 회전하기 Python (0) | 2021.09.16 |
[프로그래머스] 위클리 챌린지 4주차 (0) | 2021.08.25 |
[프로그래머스] 실패율 Python (0) | 2021.08.22 |