Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonを使用してフードパケットを受け取る人の数を調べるプログラム


会議で、2つのタイプの人がいるとします。最初のタイプの人々は菜食主義の昼食を好み、他のタイプの人々は非菜食主義の昼食を好みます。しかし、パケットの数には限りがあり、菜食主義者が非菜食主義者のパケットを受け取った場合、またはその逆の場合。彼らはそのパケットを受け取らず、好みのパケットを受け取るまで待ちません。したがって、2つの異なるタイプのパケットと人は、菜食主義者の場合は0、非菜食主義者の場合は1として示されます。ここで、2つの配列が与えられます。1つは0と1で示されるn個の食品パケットを含み、もう1つはm人のキューを含む配列であり、それらの好みは0と1で示されます。優先パケットの場合、最後にキューに再度入り、優先パケットを待ちます。ですから、私たちは彼らの好みのパケットを手配できるように、フードパケットを持っていない人の数を見つける必要があります。

したがって、入力がpeople =[0,1,1,0]、packets =[0、1、0、0]の場合、出力は1になります。

したがって、2人が非菜食主義の食品を好み、非菜食主義のパケットは1つだけです。非菜食主義者を好む列の最初の人はそのパケットを受け取り、他の非菜食主義者のパケットがないので他の人は待ち続けます。したがって、出力は1です。

これを解決するには、次の手順に従います-

  • temp_arr:=0と0の値を含む新しいリスト

  • 人の一人一人のために、しなさい

    • temp_arr [person]:=temp_arr [person] + 1

  • k:=0

  • k <パケットのサイズ、実行

    • temp_arr [packets [k]]> 0の場合、

      • temp_arr [packets [k]]:=temp_arr [packets [k]]-1

    • それ以外の場合

      • ループから出てきます

    • k:=k + 1

  • パケットの戻りサイズ-k

理解を深めるために、次の実装を見てみましょう-

def solve(people, packets):
   temp_arr = [0,0]
   for person in people:
      temp_arr[person] += 1
   k = 0
   while k < len(packets):
      if temp_arr[packets[k]]>0:
         temp_arr[packets[k]]-=1
      else:
         break
      k += 1
   return len(packets) - k

print(solve([0,1,1,0], [0, 1, 0, 0]))

入力

[0,1,1,0], [0, 1, 0, 0]

出力

1

  1. Pythonでgodownに入れるボックスの数を見つけるためのプログラム

    整数を含む2つの配列があるとします。 1つのリストには、いくつかのユニット幅ボックスの高さが含まれ、別の配列には、godownの部屋の高さが含まれます。部屋には0...nの番号が付けられ、部屋の高さは配列godownのそれぞれのインデックスに示されます。ゴダウンに押し込める箱の数を調べなければなりません。いくつかの点に注意する必要があります ボックスを重ねることはできません。 ボックスの順序は変更できます。 ボックスは左から右にのみゴダウンに入れられます。 ボックスが部屋の高さよりも高い場合、そのボックスとその右側のすべてのボックスをゴダウンに押し込むことはできません。

  2. リスト内の最小数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal