programmers.co.kr/learn/courses/30/lessons/72411
코딩테스트 연습 - 메뉴 리뉴얼
레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서
programmers.co.kr
풀이 과정
- itertools의 combinations를 이용한다. (가능한 조합을 모두 찾아준다.)
- collections의 Counter를 이용한다. (리스트의 각 원소의 개수를 key-value 형태로 저장한다.)
- 각 coures에 대해 반복문을 시행하면서 각 orders에서 combination으로 coures에 있는 개수로 조합을 모두 찾는다.
- 각 coures에 대해 찾은 조합을 모두 저장한 리스트를 Counter로 각각의 개수와 함께 저장한다.
- 저장된 counter로 2개 이상인 것들 중 가장 많이 주문한 코스를 answer에 저장한다.
전체 코드
# 메뉴 리뉴얼
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for i in course:
temp = []
for j in orders:
temp.extend(list(combinations(sorted(j), i)))
counter = Counter(temp)
if not counter: continue
m = max(counter.values())
if m < 2: continue
for i in counter.keys():
if counter[i] == m:
answer.append(''.join(i))
answer.sort()
return answer
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 level3 합승 택시 요금 (0) | 2021.04.06 |
---|---|
[Python] 프로그래머스 level3 자물쇠와 열쇠 (0) | 2021.04.02 |
[Python] 프로그래머스 level3 [1차] 추석 트래픽 (0) | 2021.04.02 |
[Python] 프로그래머스 level2 순위 검색 (0) | 2021.04.01 |
[Python] 프로그래머스 level2 문자열 압축 (0) | 2021.04.01 |