반응형
https://school.programmers.co.kr/learn/courses/30/lessons/72411
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
- 손님이 주문했던 단품메뉴들의 크기가 추가하고자 하는 코스메뉴의 사이즈 보다 작지 않다면 사이즈만큼의 모든 조합의 경우를 구해준다. 이때 각 원소들은 항상 오름차 정렬이 되어있어야 하기 때문에 order 또한 오름차 정렬을 해주어서 전달한다.
- 코스요리 메뉴는 최소 2명 이상의 손님으로 부터 주문되었고 가장 많이 함께 주문한 조합만을 후보에 포함하기로 했으므로 조합 중 가장 큰 값을 answer에 삽입한다.
- 이후 answer를 다시 오름차 정렬을 해준다.
from collections import Counter
from itertools import combinations
def solution(orders, course):
answer = []
for size in course:
arr = []
for order in orders:
if len(order) < size:
continue
comb = combinations(sorted(order), size)
arr.extend(comb)
if not arr:
continue
cnt = Counter(arr)
max_value = max(cnt.values())
if max_value < 2:
continue
for menu, value in cnt.items():
if value == max_value:
answer.append("".join(menu))
answer.sort()
return answer
'프로그래머스 > lv.2' 카테고리의 다른 글
마법의 엘리베이터 (0) | 2024.03.04 |
---|---|
124 나라의 숫자 (0) | 2024.03.03 |
연속된 부분 수열의 합 (3) | 2024.03.01 |
큰 수 만들기 (0) | 2024.02.29 |
두 큐 합 같게 만들기 (0) | 2024.02.28 |