2021 KAKAO BLIND RECRUITMENT 문제
https://school.programmers.co.kr/learn/courses/30/lessons/72411
def com(idx, sidx, N, R, arr, sel):
global menu
if sidx == R:
temp = ""
for i in sel:
temp += i
if temp not in menu:
menu[temp] = 1
else:
menu[temp] += 1
return
# 해당자리를 뽑고 가고
for i in range(idx, N):
sel[sidx] = arr[i]
com(i+1, sidx+1, N, R, arr, sel)
def solution(orders, course):
answer = []
global menu
menu = {}
for i in course:
for j in orders:
if len(j) < i:
continue
sel = [0] * i
com(0, 0, len(j), i, sorted(j), sel)
if len(menu) != 0 and max(menu.values()) != 1:
for key, val in menu.items():
if val == max(menu.values()):
answer.append(key)
menu = {}
return sorted(answer)
from itertools import combinations
from collections import Counter, defaultdict
def solution(orders, course):
answer = []
comb_dict = defaultdict(list)
for order in orders:
order =sorted(order)
for num in course:
if len(order) < num:
break
comb = list(map(lambda x: "".join(x), combinations(order, num)))
comb_dict[num].extend(comb)
for num, count_list in comb_dict.items():
menu_count = Counter(count_list)
max_count = max(menu_count.values())
if max_count > 1:
for menu, count in menu_count.items():
if count ==max_count:
answer.append(menu)
answer.sort()
return answer
from collections import defaultdict, Counter
from itertools import combinations
def solution(orders, course):
answer = []
combi_dict = defaultdict(list)
for num in course:
temp = [] # 코스의 요리갯수에 따라 담을 빈 리스트
for order in orders:
combi = combinations(sorted(order), num) # 요리갯수에 따른 조합 추출
temp += combi # 리스트에 추가
counter = Counter(temp) # 코스의 카운트 딕셔너리 생성 {'menu': count, ...}
# counter가 존재하고(길이를 벗어나는 경우 빈 딕셔너리가 생성됨)
# counter의 최대 카운트 값이 1초과인 경우
if len(counter) != 0 and max(counter.values()) > 1:
# counter안의 메뉴들 중 카운트가 최대 값인 메뉴들만 asnwer에 추가
answer += ([''.join(menu) for menu in counter if counter[menu] == max(counter.values())])
answer.sort()
return answer
if __name__ == '__main__':
print(solution(["ABCFG", "AC", "CDE", "ACDE", "BCFG", "ACDEH"], [2,3,4])
print(solution(["ABCDE", "AB", "CD", "ADE", "XYZ", "XYZ", "ACD"], [2,3,4])
print(solution(["XYZ", "XWY", "WXA"], [2,3,4])