[伯俊]13300部屋割り当てpython


部屋を割り当てる


質問する


情報小学校は2泊3日の修学旅行を団体で行うことにした.多くの学年が同じ場所に修学旅行に行きたいと思っていて、一年生から六年生まで学生が泊まる部屋を手配します.男の人と女の人は部屋を手配して、女の人は部屋を手配します.また、一つの部屋は同じ学年の学生を手配します.もちろん、1部屋につき1人しか手配できません.
1つの部屋に割り当てられる最大人数Kが与えられた場合、条件に応じてすべての学生に必要な最小部屋数を割り当てるプログラムを作成します.
例えば、修学旅行に行く学生は以下の通り、K=2の場合は12部屋必要です.3年生の男子学生を手配するには2つの部屋が必要なので、4年生の女子学生は部屋を手配する必要はありません.
学年の女子学生の男子学生の1学年の英姫の東昊、東晋の2学年の恵珍、尚希

入力


標準入力には、次の情報が表示されます.1行目では、修学旅行に参加する学生数を示す整数N(1≦N≦1000)と、1部屋に割り当てられる最大人数K(1

しゅつりょく


すべての学生に割り当てるために必要な最小部屋数を標準出力で出力します.

ソリューション

  • 性別と学年別にリストを作成します.男0~5、女6~1
  • で値上げされます.
  • の空のリスト以外のリストを再作成します.
  • のリストを迂回して、部屋を超えると、別の部屋を追加します.
  • 
    n ,room = map(int,input().split())
    
    lst = list([] for _ in range(12))
    
    cut = 6 
    
    for i in range(n) :
        sex,grade = map(int,input().split())
        if sex==1 :
            lst[grade-1].append(1)
        else :
            lst[grade+5].append(1)
    print(lst)
    lst3=[]
    for search in lst :
        if search==[] :
            continue
        lst3.append(search)
    
    for search in lst3 :
        if len(search)>room :
            lst2 = []
            while len(search)>room :
                search.remove(1)
                lst2.append(1)
            lst3.append(lst2)
    print(len(lst3))