안녕하세요 :)
2021 KAKAO BLIND 채용 문제였던 메뉴 리뉴얼 문제입니다.
https://programmers.co.kr/learn/courses/30/lessons/72411
order에 있는 알파벳으로만 combination을 해서 만들어 준다음 dictionary에 넣어서 count값을 추가해주는 방식으로 구현했습니다.
sorted_dict = dict(sorted(d.items(), key = lambda x: x[1], reverse=True))
여기서 위 코드는 dictionary를 값(value)으로 내림차순 정렬한 코드입니다.
import itertools
def solution(orders, course):
answer = []
for course in course:
d = {}
for i, order in enumerate(orders):
if len(order) >= course:
order = sorted(list(order))
combis = list(itertools.combinations(order, course))
for c in combis:
c = ''.join(c)
if c not in d:
d[c] = 1
else:
d[c] += 1
sorted_dict = dict(sorted(d.items(), key = lambda x: x[1], reverse=True))
max_cnt = -1
for i, k in enumerate(sorted_dict):
if i == 0:
max_cnt = d[k]
if d[k] == max_cnt and max_cnt >= 2:
answer.append(k)
else:
break
return sorted(answer)