티스토리 뷰

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이

from itertools import combinations
from collections import Counter

# 조합 생성
def get_candidates(orders, course):
    candidates = []
    for order in orders:
        for c in course:
            for comb in combinations(sorted(order), c):
                candidates.append(''.join(comb))
    return candidates

# 각 조합별 주문 횟수 계산
def get_most_frequent(candidates):
    freq = Counter(candidates)
    max_freq = max(freq.values()) if freq else 0
    return [k for k, v in freq.items() if v == max_freq and v >= 2]

def solution(orders, course):
    answer = []
    for c in course:
        candidates = get_candidates(orders, [c])
        answer += get_most_frequent(candidates)
    return sorted(answer)