[コティストディ]グリディ、冒険者公会


始まる前に、


前学期、彼は3回の機会でコードテストに合格しなければ合格できない大学の課程を選んだ.コードテストの準備ができていなかったので、もちろんナイトホークで問題を解いて、本当に最後のチャンスで、3回目は無理に合格しましたほほほ.私は勉強すべきだと思いますので、周りの友達に勉強指導を提案しました!ありがたいことに、その友人もちょうど一人の学習者を探していると言っていたので、また一人ずつ、全部で4人で勉強しました.
このようにして約3ヶ月間の勉強をしてきましたが、いろいろと役に立つ勉強なので、復習のために解いた問題を一つ一つ解いて振り返ります.
使用する教材は「就職のためのコードテスト」
△これも彼が推薦した教材で、いろいろなことを学びました.

Q01. 冒険者ギルド


🐣質問する


恐怖度Xの冒険者はX人以上の冒険者グループに参加しなければ旅に出られない.
N人の冒険者についての情報が得られれば、ツアー数の最高値が得られる.

🐥に答える

  • の最大組合せ数を得る必要があり、恐怖度の小さい冒険者から
  • に参加する.
  • グループ内で最も恐怖度の高い冒険者の恐怖度はグループ員で構成された
  • 冒険者情報は昇順に並べられ、一人当たり
  • の恐怖度とグループを検査します.
  • 最低人員条件を満たすツアー
  • 入力例:5|2 3 1 2

    🐓コード#コード#

    n = int(input())
    scare = list(map(int, input().split()))
    
    scare.sort()
    
    result = 0
    start, end = 0, scare[0]  # 시작점, 그룹 최소 인원
    
    while start+end<=len(scare):  # 리스트 넘어가기 전까지
      group = scare[start:start+end]  # start~start+end 모험가가 같은 그룹
      
      if max(group)>len(group): # 최대 공포도가 인원보다 크면
        end = max(group)  # 인원 늘리기 (필요한 모험가 수)
      else:
        start += end  # 다음 그룹 시작점 = 현 그룹 시작점+인원
        end = scare[start]  # 필요한 인원 업데이트
        result += 1 # 그룹 여행 떠났으니까 +1
    
    print(result)

    ⭐2022.03.26


    問題自体は簡単ですが、文字で説明するのは難しいです.ポスターが増えるたびに、私の文章の伝達能力もよくなることを望んでいます:)