Programmers Code/Level 2

[Programmers] level2 - 메뉴 리뉴얼 (Python) : 2021 KAKAO BLIND RECRUITMENT

NIMHO 2022. 6. 12. 21:10
728x90

▶메뉴 리뉴얼 (Python) : 2021 KAKAO BLIND RECRUITMENT (level 2)

풀이

combinations를 이용해서 메뉴별로 조합을 만든다.

combinations는 중복을 허용하지 않고 조합을 만들어줘서 그것을 이용했다.

 

그다음에 조합이 몇 개가 등장하는지 counter함수를 이용해서 카운트했다.

 

이때 어떤 메뉴를 추가할지 정해야 하는데

2명 이상 주문한 코스 거나 가장 많이 주문한 코스면 된다.

그래서 조건문에 1보다 커야 하고 가장 첫 번째 값과 같을 때 추가해주는 거다.

 

첫 번째 값과 같아야 하는 이유는 most_common() 함수를 이용해서 자동으로 정렬시켰고,

그렇기 때문에 두 번째 코스도 첫 번째와 같이 많이 호출되었을 수도 있기 때문이다.

 

이거를 반복시켜주면 된다.

from itertools import combinations
from collections import Counter


def solution(orders, course):
    answer = []
    for k in course:
        candi = []
        for menu in orders:
            for m in combinations(menu, k):
                a = ''.join(sorted(m))
                candi.append(a)
        sorted_candi = Counter(candi).most_common()
        #print(sorted_candi)
        #print()
        
        for menu, cnt in sorted_candi:
            if cnt > 1 and cnt == sorted_candi[0][1]:
                answer += [menu] 
    
    
    return sorted(answer)

딱히 효율성 테스트가 없어서 쉽게 통과했다.

효율성 테스트 없는 문제 짱~!!

728x90