[프로그래머스] 메뉴 리뉴얼

nayoon·2021년 6월 3일
0

Algorithm

목록 보기
46/55
from itertools import combinations

def solution(orders, course):
    answer = []
    n = course[-1] + 1
    
    comb = [dict() for _ in range(n)]
    
    # 메뉴 조합 정리
    for order in orders:
        for i in range(2, n):
            for j in list(combinations(sorted(order), i)):
                s = ''.join(j)
                comb[i][s] = comb[i].get(s, 0) + 1
                
    for c in course:
        temp = sorted(comb[c].items(), key=(lambda x: x[1]), reverse = True)
        if len(temp) == 0:
            continue
        if temp[0][1] < 2:
            continue
        for t in temp:
            if temp[0][1] == t[1]:
                answer.append(t[0])
    
    answer.sort()
    return answer

이 문제를 풀면서 아마..파이썬 공식문서를 열심히 읽고 알고리즘을 더 잘 풀자..라는 생각을 했었던 거 같다.

이제껏 딕셔너리 get의 파라미터 수가 1개인 줄 알았는데..

get(key, default) 였다.

key값에 해당하는 value가 없으면 default를 반환한다..!

보통 아래와 같이 많이 썼다.


a = dict()
if 'key' in a.keys():
  a['key'] += 1

하지만 그럴 필요 없다.


a= dict()
a['key'] = a.get('key', 0) + 1
profile
뚜벅뚜벅 열심히 공부하는 개발자

0개의 댓글