본문 바로가기
프로그래머스/lv.2

메뉴 리뉴얼

by bingual 2024. 3. 3.
반응형

 

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