[プログラマーLv 2.]メニュー更新(Python)
8988 ワード
1.質問
問題の説明
せいげんじょうけん
にゅうしゅつりょく
I/O例
2.解法
私が考えている過程
コード#コード#
from itertools import combinations
def solution(orders, course):
answer = []
for c in course:
candidates = []
new_menu = {}
for menu in orders:
menu_li = list(''.join(menu))
for li in combinations(menu_li, c):
res = ''.join(sorted(li)) # 여기서 정렬안해주면, XW, WX를 다른것으로 인식함
if res not in new_menu:
new_menu[res] = 1
else:
new_menu[res] += 1
sort_menu = sorted(new_menu.items(), reverse=True, key=lambda x: x[1])
if len(sort_menu): # sort_menu = []일 수 있음
mymax = sort_menu[0][1]
if mymax > 1:
for i in sort_menu:
if i[1] == mymax:
answer.append(i[0])
answer = sorted(answer)
return answer
3.異なる解法
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for k in course:
candidates = []
for menu_li in orders:
for li in combinations(menu_li, k):
res = ''.join(sorted(li))
candidates.append(res)
sorted_candidates = Counter(candidates).most_common()
answer += [menu for menu, cnt in sorted_candidates if cnt > 1 and cnt == sorted_candidates[0][1]]
return sorted(answer)
Reference
この問題について([プログラマーLv 2.]メニュー更新(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@78eeeeeee/프로그래머스-Lv2.-메뉴-리뉴얼pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol