プログラマ手順2「メニューのリフレッシュ」
5039 ワード
質問する
プロセスメニューの更新
に答える
組み合わせで問題を解く.
itertoolsのコンビネーションライブラリを使用して、カリキュラム数と同じサイズの各受注の部分集合をすべて集合に入れ、Counterライブラリを使用して各カリキュラムのサイズについて最も重複する部分集合を求め、答え配列に入れればよい.
Pythonコード
from itertools import combinations
from collections import Counter
def solution(orders, course):
sets = [[] for _ in range(len(course))]
for i in range(len(orders)):
a = sorted(list(orders[i]))
for j in range(len(course)):
tmp=combinations(a, course[j])
sets[j].extend(tmp)
answer = []
for i in range(len(course)):
x = Counter(sets[i])
answer = answer + [''.join(list(j)) for j, y in x.items() if y == max(x.values()) and y > 1]
return sorted(answer)
Reference
この問題について(プログラマ手順2「メニューのリフレッシュ」), 我々は、より多くの情報をここで見つけました https://velog.io/@kgpaper/프로그래머스-2단계-메뉴-리뉴얼テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol