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

Pythonで最高ランクから最低ランクの順にチームの最終ランキングを見つけるプログラム


投票と呼ばれる文字列のリストがあるとします。ここでは、各エントリは小文字であり、優先度の高いものから低いものの順に候補者の投票を表しています。ここで、候補者のランクは、最初に、最も高い優先順位で受け取った投票数によって異なります。ここで、同点の場合は、次に高い優先順位で受け取った投票数などを確認します。それでも同点がある場合は、アルファベット順にランク付けされます。したがって、チームの最終ランキングを最高ランクから最低ランクの順に見つける必要があります。

したがって、入力がvotes =["zyx"、 "zxy"、 "xyz"]の場合、zは最も高い優先度を受け取ったため、出力は "zxy"になり、最初にランク付けされます。次に、xは2番目に高い優先度を受け取り、yは最も高い優先度の票を受け取りませんでした。

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

  • count:=投票の文字列の長さ
  • cand:=各キーがサイズカウントのリストになり、最初は0で埋められる空のマップ
  • 投票のvごとに、
    • vの各インデックスiと値cについて、実行します
      • cand [c、i]を1増やします
    • 候補アイテムを値に基づいて降順で並べ替えます。値が同じ場合は、アルファベット順に並べ替えます
    • 並べ替えられた要素を連結して文字列を返します。

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

from collections import defaultdict
class Solution:
   def solve(self, votes):
      count = len(votes[0])
      cand = defaultdict(lambda: [0] * count)
      for v in votes:
         for i, c in enumerate(v):
            cand[c][i] += 1
      return "".join(sorted(cand.keys(), key=lambda x: (cand[x], -ord(x)), reverse=True))
     
ob = Solution()
votes = ["zyx", "zxy", "xyz"]
print(ob.solve(votes))

入力

["zyx", "zxy", "xyz"]

出力

zxy

  1. 行列の転置を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 行列が与えられた場合、転置を同じ行列に格納して表示する必要があります。 行列の転置は、行を列に、列を行に変更することで得られます。つまり、A行列の転置はA[i][j]をA[j][i]に変更することで得られます。 以下に示す実装を見てみましょう- 例 N = 4 def transpose(A):    for i in range(N):       for j in range(i+1, N):     &nbs

  2. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '