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