728x90
SMALL
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for i in course:
counters = []
for order in orders:
for ch in combinations(order, i):
counters.append(''.join(sorted(ch)))
counter = Counter(counters)
if counter:
max_count = max(counter.values())
if max_count >= 2:
answer += [menu for menu, count in counter.items() if count == max_count]
return sorted(answer)
- combinations()와 Counter() 모듈을 사용하여 각 조합의 갯수를 계산하였습니다.
- 삼중 반복문으로 풀리지 않을 줄 알았는데, 인자로 받는 각 배열의 크기가 그리 크지 않아서 통과한 코드입니다.
- 최소 2명 이상의 손님에게서 주문된 구성만 추가하는 등의 제약으로 최적화할 수 있었는데,
- 추가 제약으로 조건을 걸면 시간 복잡도를 줄일 수 있을 것 같습니다.
728x90
LIST
'알고리즘 문제 > 프로그래머스 (Level 2)' 카테고리의 다른 글
📗 배달 (2) | 2024.08.12 |
---|---|
📗 숫자 카드 나누기 (0) | 2024.08.05 |
📗 마법의 엘리베이터 (0) | 2024.07.23 |
📗 124 나라의 숫자 (0) | 2024.07.17 |
📗 연속된 부분 수열의 합 (0) | 2024.07.16 |